Планируется ли поддержка «поставщиков типов» для Scala's SIQ (ScalaIntegrateQuery), как в F #?

Текущее состояние SIQ было представлено Кристофером Фогтом на ScalaDays 2011 . Было показано, как запросы будут работать и выглядеть, но насколько я помню, не было представления о том, как эти типы будут представлены, например, если все еще необходимо написать шаблонный код, чтобы объяснить структуру базы данных Scala.

F # 3,0 добавляет провайдеров типов (PDC-разговор по Don Syme: видео ; GOTO Копенгаген разговор Томаша Петричека: видео , слайды , запись блога ), которые делают в основном ненужным вручную писать или генерировать сопоставления между БД (или другим поставщиком данных) и языком/системой типов, потому что язык может запрашивать структурную информацию из самой базы данных непосредственно с поставщиками типов.

Сможет ли ScalaIntegrateQuery предоставлять типы/отношения базы данных компилятору Scala, не требуя от пользователя самой записи кода шаблона?

-121--1046779-

cudaMemcpy слишком медленно Я использую cudaMemcpy () один раз для копирования точно 1GB данных Это занимает 5.9 с. Другой путь раунд занимает 5,1с. Это нормально? Имеет ли сама функция столько служебных данных перед копированием?...

Я использую cudaMemcpy () один раз, чтобы скопировать точно 1GB данных на устройство. Это занимает 5.9 с. Другой путь раунд занимает 5,1с. Это нормально?
Имеет ли сама функция столько накладных расходов перед копированием? Теоретически пропускная способность шины PCIe должна составлять не менее 4GB/s.
Нет перекрывающихся передач памяти, потому что C870 Tesla просто не поддерживает ее. Какие-либо подсказки?

EDIT 2: моя тестовая программа + обновленные тайминги; Надеюсь, это не слишком много читать!
Функции cutCreateTimer () не компилируются для меня: «error: идентификатор» cutCreateTimer «не определен» - это может быть связано со старой версией cuda (2.0), установленной на компьютере

 __host__ void time_int(int print){
static struct timeval t1; /* var for previous time stamp */
static struct timeval t2; /* var of current time stamp */
double time;
if(gettimeofday(&t2, 0) == -1) return;
if(print != 0){
  time = (double) (t2.tv_sec - t1.tv_sec) + ((double) (t2.tv_usec - t1.tv_usec)) / 1000000.0;
  printf(...);
}
t1 = t2;
}

main:
time(0);
void *x;
cudaMallocHost(&x,1073741824);
void *y;
cudaMalloc(&y, 1073741824);
time(1);
cudaMemcpy(y,x,1073741824, cudaMemcpyHostToDevice);
time(1);
cudaMemcpy(x,y,1073741824, cudaMemcpyDeviceToHost);
time(1);

Отображаемые временные интервалы:
Распределение 0,86 с
0.197 s первый экземпляр
5,02 с второй экземпляр
Странно то, что хотя он отображает 0.197s для первой копии, это занимает гораздо больше времени, если я смотрю запуск программы.

10
задан Callahan 16 September 2011 в 11:29
поделиться