Ich habe versucht, eine einfache Anwendung zu arbeiten, die Cuda, OpenMP und LLVM/Clang auf Win10 verwendet. Aus verschiedenen Quellen der Dokumentation und PowerPoint-Präsentationen, die ich online gefunden habe, glaube ich, dass diese Funktionalität in gewisser Weise unterstützt wird, aber ich bin mir nicht sicher, ob es auf Win10 unterstützt wird und ob es in der Hauptversion ist. Ich benutze LLVM 4.0.0rc1. Ich habe die Binärdatei heruntergeladen, nachdem sie auf verschiedene Arten erfolgreich aus dem Kopf entfernt wurde.Cuda mit OpenMP auf Win10 mit LLVM/Clang
Ich modifizierte diese code, um etwas wie folgt zu sehen. Ich habe auch mit verschiedenen OMP- und C-Varianten experimentiert. Es kompiliert gut. Sie können aus der verbose output sehen, scheint der Build eine fette binäre machen. Interessanterweise scheint es mir egal zu sein, was ich es für ein Ziel gebe (oder ob ich ihm ein Ziel gebe) oder was speziell in omptargets ist. Es führt auch cuda-Funktionen aus, die von nvprof gemeldet werden.
Wenn ich dies ausführen, gehen alle vier meiner Prozessoren zu 100% Nutzung nach Open Hardware Monitor, aber nichts passiert auf der GPU, außer vielleicht geringe Speicherauslastung für die Profilierungsbefehle. Fehle ich etwas, oder geht das einfach nicht?
cudaError_t f;
int t = 999;
cudaProfilerStart();
printf("Enter\n");
#pragma omp target data map(tofrom: x[0:n],y[0:n]) map(tofrom: t,f)
{
f = cudaGetDevice(&t);
#pragma omp target teams num_teams(10) thread_limit(192)
#pragma omp parallel for
for (int i = 0; i < n; i++) {
for(int j = 0; j < 10000; j++) {
y[i] += a * x[i];
y[i] *= 2;
y[i] -= x[i]/4;
y[i] *= .99;
}
}
}
cudaProfilerStop();
Ausgabe auf nvprof:
==1844== NVPROF is profiling process 1844, command: example.exe 1000000
Enter
min = inf, max = inf, avg = 0.000000 0 0
==1844== Profiling application: example.exe 1000000
==1844== Profiling result:
No kernels were profiled.
==1844== API calls:
Time(%) Time Calls Avg Min Max Name
98.86% 135.83ms 1 135.83ms 135.83ms 135.83ms cudaProfilerStart
0.60% 819.35us 91 9.0030us 0ns 398.73us cuDeviceGetAttribute
0.53% 726.09us 1 726.09us 726.09us 726.09us cuDeviceGetName
0.00% 5.2860us 1 5.2860us 5.2860us 5.2860us cuDeviceTotalMem
0.00% 4.5310us 1 4.5310us 4.5310us 4.5310us cudaGetDevice
0.00% 2.6430us 3 881ns 0ns 2.2650us cuDeviceGetCount
0.00% 1.5090us 3 503ns 377ns 755ns cuDeviceGet