Fichier BlackScholes_kernel.cuh

Image de Kuncheek provenant de Pexels
Tiré de Wikipedia
  • BlackScholes.cu
  • BlackScholes_gold.cpp
  • BlackScholes_kernel.cuh
  1. Trouvez l'assistant de périphérique cuda - il est stocké dans un helper_functions.h. Cette fonction vérifie simplement si un GPU NVIDIA est disponible dans la machine.
  2. findCudaDevice(argc, (const char **)argv);
    

    h_CallResultCPU = (float *)malloc(OPT_SZ);
    

    free(h_CallResultCPU);
    

    checkCudaErrors(cudaMalloc((void **)&d_CallResult, OPT_SZ));
    

    checkCudaErrors(cudaFree(d_CallResult));
    

    checkCudaErrors(cudaMemcpy(d_StockPrice, h_StockPrice, OPT_SZ, cudaMemcpyHostToDevice));
    

    BlackScholesGPU<<<DIV_UP((OPT_N/2), 128), 128>>>
    

    #include <iostream>
    using namespace std;
    #define DIV_UP(a, b) ( ((a) + (b) — 1) / (b) )
    int main()
    {
     cout<<DIV_UP(128, 128) << endl;
     cout<<DIV_UP(400, 128) << endl;
     cout<<DIV_UP(1000, 128) << endl;
     
     return 0;
    }
    

    1
    4
    8
    

static double CND(double d)
static void BlackScholesBodyCPU(
float &callResult,
float &putResult,
float Sf, //Stock price
float Xf, //Option strike
float Tf, //Option years
float Rf, //Riskless rate
float Vf  //Volatility rate)
extern "C" void BlackScholesCPU(
float *h_CallResult,
float *h_PutResult,
float *h_StockPrice,
float *h_OptionStrike,
float *h_OptionYears,
float Riskfree,
float Volatility,
int optN)

Tiré de wikipedia

Le fichier se compose du même code C ++ que dans le fichier .cpp ci-dessus avec un léger code de syntaxe supplémentaire.

  1. La fonction __global__ est également appelée fonction «noyau». C'est la fonction que vous pouvez appeler du côté hôte en utilisant la sémantique d'appel du noyau CUDA ( <<<...>>>). Dans notre cas, il est défini dans le fichier ci-dessus une fonction BlackScholesGPU.
  2. __global__ void BlackScholesGPU
    

    __launch_bounds__(128)
    

    __device__ inline void BlackScholesBodyGPU
    

En ce qui concerne le point de départ, j'ai laissé les données d'origine configurées par les développeurs CUDA:

const int OPT_N = 4000000;
const int NUM_ITERATIONS = 512;
const int OPT_SZ = OPT_N * sizeof(float);
const float RISKFREE = 0.02f;
const float VOLATILITY = 0.30f;

GPU Device 0: “Turing” with compute capability 7.5
Initializing data…
…allocating CPU memory for options.
…allocating GPU memory for options.
…generating input data in CPU mem.
…copying input data to GPU mem.
Data init done.
Executing Black-Scholes GPU kernel (512 iterations)…
Options count : 8000000
BlackScholesGPU() time : 2.458114 msec 
Effective memory bandwidth: 32.545271 GB/s
Gigaoptions per second : 3.254527
BlackScholes, Throughput = 3.2545 GOptions/s, Time = 0.00246 s, Size = 8000000 options, NumDevsUsed = 1, Workgroup = 128
Reading back GPU results…
Checking the results…
…running CPU calculations.
Comparing the results…
L1 norm: 1.787766E-07
Max absolute error: 1.192093E-05
Shutting down…
…releasing GPU memory.
…releasing CPU memory.
Shutdown done.
[BlackScholes] — Test Summary
NOTE: The CUDA Samples are not meant for performance measurements. Results may vary when GPU Boost is enabled.
Test passed

Tous mes vœux!

Suggested posts

Simulation du changement climatique dans ImGui C++

Simulation du changement climatique dans ImGui C++

L'article suivant montre la visualisation du changement climatique observé par la NASA. Daniel Shiffman de The Coding Train m'a inspiré pour reproduire la simulation en C++.

Concours de trading Testnet sur Rysk Beyond

Inscrivez-vous pour plus de 50 000 $ en prix

Concours de trading Testnet sur Rysk Beyond

L'attente est presque terminée. En quelques jours seulement, vous pouvez négocier des options sur Rysk Beyond, un protocole d'options riche en fonctionnalités avec une expérience utilisateur avancée pour les traders.

Related posts

Journal ouvert

Journal ouvert

Journal ouvert : une image par jour. J'ai toujours été fasciné par les histoires.

La persécution des chrétiens : le crime de haine dont nous ne parlons pas

Oubliez l'islamophobie : les chrétiens (et les juifs) sont les principales victimes des crimes de haine religieuse.

La persécution des chrétiens&nbsp;: le crime de haine dont nous ne parlons pas

Tout esprit rationnel sait que les milieux politiques et médiatiques sont dominés par la gauche, voire l'extrême gauche, un état de fait qui crée un déséquilibre dans le discours politique. Dans le domaine religieux, ce déséquilibre est bien visible : les journaux et les réseaux de gauche ne se précipitent pas pour défendre la foi chrétienne.

L'érosion lente : dévoiler les façons dont les gens perdent leur carrière

L'érosion lente&nbsp;: dévoiler les façons dont les gens perdent leur carrière

Dans le monde rapide et compétitif d'aujourd'hui, la carrière d'une personne joue un rôle important dans la croissance personnelle, la stabilité financière et la satisfaction globale de la vie. Cependant, de nombreuses personnes se retrouvent prises dans un cycle incessant de stagnation et d'insatisfaction, dépérissant progressivement dans leur vie professionnelle.

Le mensonge du cow-boy

Comment les mégacorporations ont vendu aux Américains un mensonge costaud

Le mensonge du cow-boy

C'est un matin brillamment doré dans les collines de l'ouest, alors que les premiers rayons du soleil illuminent l'herbe givrée des plaines. Un troupeau de bovins Angus placides, d'un noir de jais et massif, se découpe sur le lever du soleil alors qu'ils descendent un sentier battu vers un lieu qu'ils connaissent tous bien; le bar du petit-déjeuner.