Thursday, 16 February 2017

Déménagement Moyenne Cuda

Im pas un programmeur avec n'importe quelles capacités. Juste quelqu'un curieux au sujet de CUDA et ainsi Im faisant un peu de lecture. J'ai rencontré un exemple d'utilisation de Thrust pour faire une moyenne mobile: L'exemple, tel qu'il est, s'exécute et fonctionne principalement correctement. Toutefois, son trivial dans le sens où il ne fait qu'une opération moyenne mobile. Comment je pourrais dire 352 de ces opérations de moyenne mobile en parallèle, tous fonctionnant sur le même flux de données Dans mon esprit, le flux de programme pourrait être: Générer l'ampli de données l'envoyer à un noyau CUDA. (Identique au code existant, mais pensez à des longueurs de 1000 ou 10000 au lieu de 30) Copiez-le du noyau CUDA à tous les autres 351 cœurs CUDA de ma GTX 465 Dites à chaque noyau CUDA le nombre d'éléments de données à la moyenne. (4. 5. 6. 352. 353. 354) Dites à l'appareil d'exécuter la moyenne dans chaque noyau en parallèle Lire les résultats de chaque noyau Je comprends que ce code le fait tout se produire, mais comment obtenir Thrust à faire Beaucoup d'entre eux en parallèle Mon intérêt ici est de quelque chose comme des données de stock. Si je regarde les prix GOOG Id mettre cela dans le GPU en utilisant tous les noyaux et la laisser là. Id alors être libre de faire beaucoup de traitement sans charger les données plus et juste de lire les résultats de chaque noyau. REMARQUE: je pourrais ne pas vouloir utiliser GOOG dans tous les noyaux. Certains noyaux peuvent être GOOG, d'autres avec un autre symbole, mais Ill arriver plus tard. Im juste pensant que je ne veux pas les données de stock dans la mémoire globale si theres assez de pièce dans chaque noyau. Je suppose que c'est assez simple pour CUDA amp Thrust demandé Sep 12 12 at 19:39 Je crois comprendre que vous êtes intéressé par les deux situations suivantes: Vous avez une longue séquence d'articles et vous voulez calculer un certain nombre de moyennes, par Calculer la moyenne sur différents nombres d'articles, c'est-à-dire utiliser des longueurs différentes pour la fenêtre de la moyenne mobile. C'est ce que je comprends de votre question initiale. Vous avez une série de séquences, stockées consécutivement en mémoire, et vous voulez les moyennes en parallèle avec une fenêtre de moyenne fixe de taille 2 RADIUS 1. C'est ce que le code ArrayFire proposé par asm - vous l'avez accepté. Au lieu d'utiliser CUDA Thrust, je pense qu'il serait plus facile d'écrire votre propre noyau CUDA pour effectuer les opérations ci-dessus. Ci-dessous, un exemple entièrement travaillé qui fonctionne de la même manière que le code ArrayFire proposé par asm, couvrant ainsi le cas 2. La modification pour couvrir le cas 1 serait simple. Pour une autre approche, vous pouvez tronquer la fenêtre de moyenne mobile exponentielle et ensuite calculer votre signal filtré en faisant une convolution entre votre signal et l'exponentielle fenêtrée. La convolution peut être calculée en utilisant la bibliothèque CUDA FFT libre (cuFFT) car, comme vous le savez peut-être, la convolution peut être exprimée comme la multiplication ponctuelle des deux signaux dans le domaine fourier (C'est le théorème Convolution, Qui s'exécute avec une complexité de O (n log (n))). Ce type d'approche minimisera votre code de noyau CUDA et fonctionnera très très rapidement, même sur une GeForce 570 Particulièrement si vous pouvez faire tous vos calculs en précision simple (flottante). Répondre Apr 30 14 at 17:04 Je proposerais de manipuler l'équation des différences ci-dessus comme indiqué ci-dessous et ensuite en utilisant CUDA Thrust primitives. La forme explicite est la suivante: CUDA THRUST IMPLEMENTATION Vous pouvez implémenter la forme explicite ci-dessus par les étapes suivantes: Initialiser une séquence d'entrée dinput à Alpha à l'exception de dinput0 1. Définir un vecteur d1 overbetatothen égal à 1, 1beta, 1beta2, 1beta3. Multiplier elementwise dinput par d1overbetatothen Effectuer un inclusivescan pour obtenir la séquence de yn betan Diviser la séquence ci-dessus par 1, 1beta, 1beta2, 1beta3. L'approche ci-dessus peut être recommandée pour les systèmes Linear Time-Varying (LTV). Pour les systèmes Linear Time-Invariant (LTI), l'approche FFT mentionnée par Paul peut être recommandée. Moyenne mobile Barracuda Networks: Les mouvements des cours des actions de CUDA peuvent être prévus en utilisant des déclencheurs basés sur des moyennes mobiles (en espagnol, en espagnol, en espagnol, en espagnol et en espagnol) , Qui sont aussi quelques-uns des indicateurs techniques les plus simples. La façon dont les moyennes sont calculées dans chacun des 2 cas populaires, c'est-à-dire SMA et EMA varie, mais l'interprétation des diagrammes Barracuda Networks après les calculs restent les mêmes. La moyenne mobile de 100 jours de 50,12 est inférieure au dernier cours de clôture de 23,14. Il faut choisir la durée d'une moyenne mobile en fonction de l'objectif de placement et de l'horizon d'investissement. Pour les périodes supérieures à 100, il faut un mouvement plus long et plus long des cours des actions CUDA pour que la moyenne mobile change de cap. Barracuda Networks Bandes de Bollinger: bandes de Bollinger se composent de deux bandes de prix au-dessus et au-dessous d'une ligne centrale pour toute entreprise stock comme Barracuda Networks. Le resserrement des bandes est considéré par la plupart des traders comme un précurseur d'une augmentation soudaine de la volatilité. Actuellement, le cours des actions de 23,14 est dans la gamme inférieure des bandes de Barracuda Networks bollinger. Barracuda Networks Divergence moyenne de convergence ou MACD: La divergence de convergence moyenne mobile ou MACD est un indicateur technique qui aide à mesurer la tendance des cours boursiers, car l'indicateur est utile pour comprendre la force, la direction et l'élan du cours de l'action. L'indicateur Barracuda Networks MACD est supérieur à 0, ce qui indique une tendance haussière. Barracuda Networks Indice de force relative: L'indicateur technique RSI est un oscillateur de momentum. Il compare la vitesse et la variation des mouvements de prix. 61.19 est la valeur RSI du stock CUDA.


No comments:

Post a Comment