Ba (Chinese: 巴; pinyin: Bā; literally: "a pictograph for 'snake', linguistically meaning "cling" and "handle"") was an ancient state in eastern Sichuan, China. Its original capital was Yicheng (Enshi City), Hubei. Ba was conquered by Qin in 316 BC. The modern minority Tujia people trace some of their origins back to the people of Ba.
Ba, often described as a loose confederation or a collection of chiefdoms, consisted of several loosely affiliated independent clans who recognised a king. The Ba clans were highly diverse, being composed of multiple ethnicities. Archaeological evidence shows that the Ba people relied primarily on fishing and hunting, with low levels of agriculture and no evidence of irrigation.
Ba originally included territory in the Han Valley and had its capital at Yicheng, Hubei; however the ascendance of Chu pushed Ba westwards and further into the Sichuan Basin. Chu expansion also forced Ba to move its capital several times. According to the 4th century CE Chronicles of Huayang by Chang Qu, capitals or administrative centers of Ba included Jiangzhou (Chongqing), Dianjiang (Hechuan District), and Pingdu (Fengdu), with its final capital at Langzhong. During the Warring States period, Qin, Chu and Shu, all more powerful states, shared a common border with Ba.
The earliest evidence of human settlement in the region is found at the Heliang site near Fengdu and is dated to 15,000 years ago. A neolithic site found at Daxi dates from 5000-3000 BC while a late neolithic site (c. 2000 BC) was found at Zhongba in Zhongxian.
The clans did not yet have a leader, but simply worshiped the ghosts and spirits, and so they made a pact: whosoever could throw a dagger and have it lodge in a particular stone crevice high up a cliff would be chief. Of all the competitors, only a son of the Ba Clan, Wuxiang, was able to achieve the target, and when he did so all present sighed with admiration. Again they made a competition, giving each competitor a rustic boat and swearing, "he who keeps himself afloat [on these rough waters] shall be chief!" Again Wuxiang prevailed, while all the other boats sank. So they made him chief, calling him Lord Lin.
Lord Lin led the people to settle in Yicheng in present-day southwestern Hubei near Sichuan. The first Ba centre in Sichuan was Peiling (also called Zhi), reputedly the burial ground of the earliest Ba kings. The Ba absorbed other tribes it encountered, such as the Pu (濮), Zong (賨), Ju (苴), Gong (龔), Nu (奴), Rang (獽), Yi (夷) and Dan (蜑) tribes, therefore Ba is in reality a confederation of different groups. The Pu for example were a widespread tribe ranging from Henan to Guizhou and referred to as the Hundred Pu (百濮) due to their variety, and the Ju was a state in north central Sichuan, while the Dan were said to live on water, and the Rang were a people from the southeastern part of the Ba state known for their cliff burials.
Mentions of a "Ba country" appeared in Shang dynasty oracle bones from the 13th century BC where the king of Shang contemplated attacking the Ba. The state of Ba may have aided the founders of the Zhou dynasty in its overthrow of the Shang at the Battle of Muye in 1046 BC. However, Ba's first definitive appearance in recorded history occurred in 703 BC; the Zuo Zhuan records that Ba took part in a joint military operation with Chu against Deng. Although Chu sometimes encroached on Ba territory, Ba shared a complex relationship with Chu, with strong trade and marriage ties. Chu also employed many Ba mercenaries as soldiers in its own army. This practice sometimes caused problems for Chu; in one instance, Ba mercenaries employed by Chu rebelled and besieged the Chu capital in 676 or 675 BC.
In 316 BC, Ba and Zu allied with Qin in to invade Shu. However, after the successful conquest of Shu, Qin immediately turned on its two allies and captured the last Ba king. The Ba state was extinguished and converted into a Qin commandery. Unlike its management of Shu, Qin allowed the Ba elite to retain direct rule and did not force large-scale migrations of Qin people into Ba territory. The Ba elite would later be marginalized through a policy of divide and rule.
The tiger was an important part of Ba mythology, with the white tiger being held in highest esteem. According to legend, the first king of Ba, Lord Lin, transformed into a white tiger upon his death. Artifacts from Ba archaeological sites often employ tiger motifs. Archaeological evidence also suggests the Ba people may have practised human sacrifice, which History of the Later Han indicates was made to the white tiger spirit of Lord Lin.
Warfare played an important role in Ba society. Their warriors were often employed as mercenaries by other states; they played a role in the defeat of Xiang Yu by Liu Bang (later Emperor Gaozu of Han), and later served the Han dynasty.
Weapons were prevalent in Ba grave goods, some with distinctive curved blades. Other distinctive features of Ba culture are their boat-shaped coffin burials, and they used Ba-style bronze drums (錞于, similar to Đông Sơn drums), topped with the figure of a tiger, to communicate in battle. As in other states of ancient China, they made beautiful bronze dings or sacrificial tripods, sometimes with writing on them.
The Ba people were known for the musical abilities and gave the Chinese a distinctive dance style and music that was popular for centuries. The dance, called Ba Yu (Chinese: 巴渝, later renamed the Zhaowu, Chinese: 昭武) dance, was first brought to prominence by Emperor Gaozu of Han, who enjoyed their war dances. Large-scale performances of the dance involved the brandishing of various weapons to the accompaniment of drums and songs in the Ba language. It remained popular through the Tang dynasty and spread as far as Central Asia.
The Ba-Shu culture developed writing systems whose symbols appear to be unrelated to Chinese characters. Three Ba–Shu scripts have been found on bronzeware, none of which have been deciphered. One apparently pictographic script was used to decorate weapons found in Ba graves in eastern Sichuan. The second script is found in both western and eastern Sichuan, on weapons, a belt buckle and on the base of a bronze vessel. Some scholars believe this script to be phonetic, pointing to similarities between some of the symbols and symbols of the later Yi script. The third script (possibly also phonetic) is known only from an inscription on the lid of a bronze vessel found in a grave in Baihuatan, Chengdu.
Ba is represented by the star Epsilon Serpentis in asterism Right Wall, Heavenly Market enclosure (see Chinese constellation).
1 2 3 Barbara A. West (2009). Encyclopedia of the Peoples of Asia and Oceania. Infobase Publishing. pp. 73–74. ISBN 978-0-8160-7109-8.
↑ Kim Hunter Gordon, Jesse Watson (2011). Chongqing & The Three Gorges. pp. 8–11. ISBN 978-7-5022-5215-1.
↑ Kim Hunter Gordon, Jesse Watson (2011). Chongqing & The Three Gorges. pp. 12–13. ISBN 978-7-5022-5215-1.
1 2 Steven F. Sage. Ancient Sichuan and the Unification of China. State University of New York Press. pp. 51–52. ISBN 978-0791410387.
↑ Terry F. Kleeman (1998). Ta Chʻeng, Great Perfection - Religion and Ethnicity in a Chinese Millennial Kingdom. University of Hawaii Press. p. 43. ISBN 0-8248-1800-8.
↑ Hou Hanshu Original text: 廩君死,魂魄世為白虎。巴氏以虎飲人血,遂以人祠焉。 Translation: When Lord Lin died, [people thought that] his spirit appeared to the world as a white tiger. The people of Ba believed that tigers drink human blood, so they made sacrifice to him using human victims.
↑ Terry F. Kleeman (1998). Ta Chʻeng, Great Perfection - Religion and Ethnicity in a Chinese Millennial Kingdom. University of Hawaii Press. pp. 44–45. ISBN 0-8248-1800-8.
↑ "Overseas Archaeology: The Ba Civilization of Sichuan Province in China", Wilhelm G. Solheim II Foundation for Philippine Archaeology, The Solheim Foundation Bulletin, Quarterly Bulletin, Volume I, No. 1, July – September 2003. "A bronze ding tripod at least 2,000 Years old was excavated in Sichuan Province. At this site was found the largest number of relics related to the Ba People ever excavated. News of the discovery of a burial belonging to the ancient Ba people of Sichuan province made headlines in newspapers and magazines around China early last month."
↑ Terry F. Kleeman (1998). Ta Chʻeng, Great Perfection - Religion and Ethnicity in a Chinese Millennial Kingdom. University of Hawaii Press. pp. 45–46. ISBN 0-8248-1800-8.
↑ Sage, Steven F. (1992). Ancient Sichuan and the Unification of China. SUNY Press. pp. 74–75, 244–245. ISBN 978-0-7914-1037-0.


text:
Find this article at: http://www.nfl.com/news/story/0ap3000000484082/article/peterson-highly-unlikely-to-face-further-suspension
Peterson highly unlikely to face further suspension
By Marc Sessler
Around the NFL Writer
Published: April 7, 2015 at 07:34 p.m.
Updated: April 8, 2015 at 08:05 p.m.
With Adrian Peterson's reinstatement meeting with Commissioner Roger Goodell in the rear-view mirror, what's next for the All-Pro Vikings running back?
NFL Media Insider Ian Rapoport told NFL Total Access on Tuesday that Peterson is "highly unlikely" to face further suspension when he finally comes off the Commissioner's Exempt List, according to a source.
That checks the box on Peterson's top priority heading into Tuesday's meeting with the NFL. Rapoport was told the runner wanted to "weigh in on why he believes he should not be suspended, why he should not face additional penalty when he comes off this list."
Peterson's next priority? Clearing the way for his full return to the field come September. The 30-year-old running back has floated in limbo since agreeing to a plea deal in November of no contest to one count of misdemeanor reckless assault.
"Peterson wants to have a completely clean slate by the draft," Rapoport said. "His point: The Minnesota Vikings have held strong in saying they do not plan on trading Adrian Peterson. They believe he will play for them in 2015. In fact, they want him to play for either them or no one else.
"However, if they are to be tempted with a trade," Rapoport said, "it is going to come at the time of the draft and Peterson wants to make sure there are no obstacles to him getting on the field in 2015, just in case another team decides to come calling -- maybe like the Cardinals, maybe like the Cowboys."
With Peterson's agent, Ben Dogra, declaring last month that it is not in Peterson's best interest to play for the Vikings, the final act of this drama, clearly, has yet to be written.
The latest Around The NFL Podcast welcomes back Colleen Wolfe to the show and breaks down team needs heading into the draft. Find more Around The NFL content on NFL NOW.

redpajama_set_name: RedPajamaCommonCrawl


The Amphitheater of Tirana located in Grand Park will go through a major renovation which will last about 3 months. During these last two years the amphitheater was turned into a lively area thanks to various activities organized by Municipality of Tirana.
The Amphitheatre also known as Summer Theatre projected by the Albanian engineer Temo Vito was inaugurated on 1973 making it a very popular attraction during summer in Tirana. But years after the fall of communism in 90's the amphitheater was faded and some tiles were destroyed. The Agency of Parks and recreational of Municipality of Tirana wanted to bring the atmosphere again on this abounded area, part of Grand Park and they started to organize events such as concerts, dances, cirques and theater shows. The interest of people was increased and each event gathered families with kids, friends and people of different ages. Famous Albanian soprano Inva Mula is a strong supporter of the idea. The world-known singer sees it as an opportunity for Tirana to communicate through art.
The renovation aims to bring back the identity of the amphitheater and make the area an open air art scene.


text:
Pope Francis shuns security and pomp in visit to Italian leader
November 14, 2013 / 10:12 AM / AP
ROME - Pope Francis shunned a presidential guard escort for his first state visit to the Italian president Thursday in yet another breach of protocol and security, even though some people have expressed concerns for his safety as he ramps up his reform of the Vatican.
Francis' simple blue Ford Focus and the small Vatican motorcade pulled up quietly to the Quirinale Palace without the blaring of sirens that typically accompanies politicians and foreign dignitaries cruising through central Rome.
Once inside the onetime summer residence of popes, Francis walked slowly with President Giorgio Napolitano past the honor guard and then greeted staff members and their children, further evidence of a more casual approach to official duties by the Argentine "slum pope."
Francis' shunning of the trappings of the papacy -- including its security apparatus -- has defined his papacy so far. But his desire to be close to his flock and his aim to curb corruption and waste in the Vatican have raised fresh security fears, beyond the occasional mobbing of his open car by overly enthusiastic pilgrims.
A leading anti-Mafia prosecutor, Nicola Gratteri, this week raised the alarm that Francis' financial house-cleaning might make him a target for Italy's mob, though he provided no evidence that such a threat existed or that the mob was planning a hit.
Just last week, Francis denounced parents who feed their children the "unclean bread" earned through bribes and corruption, saying dishonest work deprives parents and their children of dignity.
Gratteri's comments, in an interview with the Il Fatto Quotidiano daily, came in relation to his new book "Holy Water" which details the unholy alliance between the Italian Catholic Church and the 'ndrangheta organized crime group in southern Calabria.
In the interview, Gratteri said Francis was moving in the right direction by "breaking down the center of economic power in the Vatican."
"Those who have been nourished by the power and wealth that is directly derived from the church are nervous and agitated," Gratteri was quoted as saying. He said he didn't know if the Mafia could target the pope, "but certainly they're thinking about it. He could be a threat."
The Vatican spokesman, the Rev. Federico Lombardi, said the Holy See was not concerned.
"We are absolutely calm," he told The Associated Press. "Everything is going ahead normally and it seems there's no reason to fuel such alarmism."
First published on November 14, 2013 / 10:12 AM


text:
Q: can not run java inside grsec chroot java runs well inside common chroot.
however in a grsec hardened chroot it complains it has no enough memory to build VM.
any ideas of how to make it run cause i really need a hardened chroot.
thanks.

A: You should provide more details: exact text of error message, which JVM you're using, etc.
I had similar issue running java on 32-bit Gentoo Hardened (also grsec, but without chroot): https://bugs.gentoo.org/show_bug.cgi?id=344135
You can try to work around this issue by changing your jvm.cfg to use "client" instead of "server", for ex.:
[jvm.cfg.patch]
--client IF_SERVER_CLASS -server
--server KNOWN
+-client KNOWN

Also you can try to run java with -client and/or -Xmx256m options.

A: Generally Java plays well with grsec.
However there are an option in grsec that break things bad for Java.
Seems you have that option enabled in your kernel.
Check it at:
[*] Grsecurity
  Customize Configuration  --->
    PaX  --->
      Miscellaneous hardening features  --->
        [ ] Sanitize all freed memory

Make sure Sanitize all freed memory option is disabled, recompile kernel(IMO it can not be managed via sysctl) and retry.

redpajama_set_name: RedPajamaStackExchange


text:
by Erin Carlson
Seven high achievers on our radar this month, from Bay Area heavyweights to the next generation shaking things up.
Alexis Ohanian
This San Franciscan has got it going on. Sure, he co-founded Reddit, the self-professed "front page of the internet." Sure, venture capitalists have valued the site at $500 million. Sure, he's guided and invested in 100-plus tech startups like hipmunk, Instacart and Zenefits. Sure, he's the best-selling author of Without Their Permission, a manual for aspiring entrepreneurs. But what truly makes Ohanian eligible for our recognition? Over the holidays he asked girlfriend Serena Williams—one of the world's greatest athletes and a goddess among mere mortals—to marry him. And she said yes. Bravo, Alexis, well done, you win at life.
Christina Choi
Props to Choi on the opening of her new makeup studio and showroom in Union Square. She launched her line, Christina Choi Cosmetics, in 2012 following successful stints at Bare Escentuals and MAC, where she spent nearly eight years. Striking out on her own, she cultivated customers with an empowering message: Celebrate your unique beauty. "It has been a privilege to be included in so many womens' lives," she said. "It is a responsibility I don't take lightly. I want to make sure they have the best-quality products that are versatile, multi-functional and long lasting." We're all about the Island Orchid eyeshadow, a purple-y blue, and the Girls' Night Out gloss, a cheeky red for lips.
On February 9th, the Friends of the SF Film Commission will bestow the filmmaker (Home Alone, Stepmom, the first two Harry Potter movies) with its first-ever Robin Williams Award For Excellence in Entertainment. Williams died nearly two and a half years ago, and Columbus—who directed him in the blockbuster comedy Mrs. Doubtfire—remarked of the loss, "We were friends for 21 years. Our children grew up together. He inspired us to spend our lives in San Francisco, and I loved him like a brother." The Pacific Heights resident is also a screenwriter whose credits include Gremlins, The Goonies and Nine Months.
Dorka Keehn
The Golden State Warriors have hired Keehn to commission public art by fellow artists for the team's arena upgrade in Mission Bay. The complex, slated to open in 2019, stands to benefit from her special touch: She collaborated with Brian Goggins on the North Beach sculpture Language of the Birds (picture a flock of airborne books) and helped raise $8 million to make Leo Villareal's dazzling Bay Lights show a fixture of the city's skyline. "I've always been interested in the individual's ability to effect change," said Keehn, daughter of banker Grant Keehn. "I was raised by a father who was a product of the American dream and taught me that if I worked hard, I could achieve whatever I wanted to."
Helen Diller
This is a special tribute to the committed philanthropist, who died in January 2015 after serving as president of The Helen Diller Family Foundation, which focused on education, science and the arts. In 2003, she and husband Sanford Diller, with whom she owned the Prometheus Real Estate Group and had three children, donated $35 million to support the Helen Diller Comprehensive Cancer Center at UC San Francisco. Last month, the family outdid themselves by pledging a record $500 million to the campus in Diller's honor. "It's never too late, too early, or too often to give back and make the world a better place," Diller has said.
Krista Coupar and Kay Evans
Meet the duo behind Decorum, an online marketplace for interior designers to share one-of-a-kind pieces from private collections that haven't been made available to the public. Recently, the industry has "relied more heavily on retail furnishings and fixtures," Evans said. "To revive the fine art of design, we've created a community for designers who value the craftsmanship and rich history of antique, vintage, and bespoke decor." Chiming in, Coupar, founder of Coupar Consulting, added, "A retail casegood, although beautiful, doesn't tell a story. A 19th-century French armoire that was hand selected by a nationally-renowned interior designer for a notable San Francisco family's estate does."
Alexis Ohanian Chris Columbus Christina Choi Dorka Keehn Erin Carlson Helen Diller Krista Coupar and Kay Evans Movers and Shakers
Lillian Phan plans your big day
The Interview: John and Gretchen Berggruen
May Movers and Shakers


text:
Colombia: SUTIMAC renews its leadership
The National Trade Union of Workers in Construction Materials Industry of Colombia, (SUTIMAC) elected a new Directors National Board for the period 2018-2020 at its recent General Assembly held on January 24th - 27th, 2018 in the town of Jumbo, industrial zone of Cali (Valle del Cauca), west region of the country.
SUTIMAC, distinguished by its historical struggles and conquests in benefit of workers in the construction industry and their families, brings together 2500 members of cement companies, brick and other construction materials. In Colombia, there's a 4.6% growth estimation of construction sector in 2018, almost twice as much as the rest of the economy for this year according to employers grouped in the Colombian Construction Chamber (CAMACOL).
The responsibility for conducting the organization as president fell to Manuel Fernandez from the Bolivar branch of the union for the period 2018-2020. Fernandez is an experienced union leader in his country and region who have served as General Secretary of the National Board of Directors until his election as president last week. Together with him, other 21 leaders will guide the union during next period, including José Hernández as Vice President, Walter Echavarria as General Secretary and Miguel Sierra as Treasurer Secretary.
In a note sent to Fernandez, Nilton Freitas, Latin American and the Caribbean BWI Regional Representative, highlighted the work by Otoniel Ramirez Lopez former president, who has dealt during years with on several fronts, including repression, intimidation and violence against Colombian trade union movement. Even so, SUTIMAC achieved substantial improvements for its members, said Freitas.
The context in which Manuel Fernandez and his comrades assumes the new responsibilities isn't less difficult, but certainly they will overcome the circumstances in a country that presents a renewed international image in its economic indicators, but with serious inequalities, weaknesses and injustices, finalized the note issued from the BWI Regional Office in Panama City.
SUTIMAC is a member of the Intergremial of Construction and Wood Workers of Colombia, the platform for trade union work that brings together trade unions from the BWI sectors in this country..


Summer has arrived early for us in Sunny Florida! Schools are out, the weather is warm, beaches packed and were just past Memorial Day Weekend and nearing 4th of July!
This weekend – June 3rd through June 6th – Reserve any combination of three nights – can be Fri, Sat and Sun or Saturday, Sunday and Monday – You pay for the first two nights and receive the third night FREE of charge!!!!
That's right, you are not reading it wrong.. its a FREE night with a two night paid stay!
Special does not apply to pre-existing reservations or rooms booked utilizing a gift certificate. Special does apply to all rooms based on availability. Guests must contact the innkeeper directly!
We really look forward to making your stay a special one! Don't forget to ask about our specials and packages along with suggestions on our favorite restaurants, attractions tours and excursions – anything we can do to help you enjoy your stay the best way possible!
FREE parking and our two-course breakfast is always included in each stay! We look forward to hearing from you soon!


Glen has also been with the Butcher's Block for two years. His specialty is cutting and hand trimming our quality meats. Glen is also an accomplished chef, so feel free to ask him about cooking tips!!
Scott has worked at the BB since he was 14 years old, and is a very hands on owner. He has a great knowledge of wines, and takes pride in offering quality products, and great customers service!
Mary S. has been with the Butcher's Block for over 16 years. She takes care of all our wonderful deli and prepared foods. She has been a great asset to our team.
The McGowan family has over five generations of experience and expertise in the meat business.


Epilepsy Toronto provides counselling, employment support, advocacy and education to help people with epilepsy live well. We believe that taking part of an active epilepsy community, receiving vital support and connecting with others who are going through similar experiences helps manage the challenges of living with epilepsy. We encourage you to look at our programs and services we provide and contact us to find out more. We would be delighted to help. For assistance, call us at 416-964-9095 or email info@epilepsytoronto.org.
Epilepsy Toronto would welcome your tax-deductible donation.


text:
A booming seafood industry with a focus on sustainability
Bergen has been a centre for trading in fish since its foundation in 1070. Today, all major seafood companies have headquarters in Greater Bergen.
In 2018, Norway's aquaculture industry reached an all-time high, as seafood export reached 99 billion NOK. This was equal to a total of 37 million seafood meals for the world's growing population.
The fish farming sector is set to grow in the decades to come, reaching an estimated 550 BNOK by 2050. We are proud to be at the forefront of this field, developing the next generation of sustainable farms at sea.
Bergen has a strong research environment, centred on the Norwegian School of Economics and The University of Bergen. The latter institution includes renowned marine and aquaculture research departments and centres.
The city's long history with fisheries also makes it the natural home for the Institute of Marine Research and the Directorate of Fisheries.
"There is no other place in the world like Bergen," says start-up founder
Seafood startups make a splash in Bergen
Changing how seafood ends up on your plate
The complete seafood value chain
If you want to do business with strong global seafood brands, Greater Bergen is the place to be. Major Norwegian salmon producers such as Marine Harvest and Lerøy Seafood are located in the city, along with the Aqua Nutrition HQ of international giant Cargill.
The city's NCE Seafood Innovation Cluster brings together all of the leading suppliers of farmed Atlantic salmon, together with many exciting aquaculture start-ups.
Greater Bergen has companies across the entire value chain:
Salmon and trout aquaculture: ingredients, feed, harvest, processing and marketing
Fisheries and harvest of shellfish and molluscs
Marine ingredients and marine bioprospecting
Feed production to support a variety of species
The supplier industry: technology, services and more
Knowledge development through education and research
New and emerging industries towards 2050:
Aquaculture based on new species such as cod, halibut and mussels
Marine algae: harvest or cultivation of marine micro- and macro algae
Highly productive waters: production manipulated through processes focusing on high harvestable yields
Sustainable seafood farming
The world needs food, and there is an untapped potential to produce more sustainable seafood in Norway. The seafood cluster in Greater Bergen is dedicated to reducing the environmental and ecological footprint from aquaculture.
The NCE Seafood business cluster works together to create new business opportunities and solutions that will maintain Norway's role as a front-runner in environmental responsibility. The R&D community plays a significant role in these endeavours.
A leader in marine research
Bergen has the largest concentration of aqua farming R&D resources in Europe, including infrastructure such as seagoing ships and advanced test facilities.
The industry in the region is currently involved in more than 300 R&D projects with high international participation.
Significant research activity takes place in Marineholmen Science Park, an innovation centre for marine education, research and seafood business.
The Future of Aquaculture
Discover more about western Norway's seafood sector with our free e-book. Includes stories and case studies
Greater Bergen's blue ecosystem.
Tone Hartvedt
For more information about the seafood cluster in Bergen, please visit our website.
Visit seafoodinnovation.no
Download our fact sheet about the Seafood cluster in Greater Bergen.
Get the latest news from Greater Bergen.
Latest news from this industry
New investor network will boost seafood sector
A Bergen-based company is organizing a new investor network in order to attract more capital to the seafood sector.
Bergen company to explore seaweed packaging
The Bergen-based seafood giant Lerøy will be exploring how to use sustainable packaging made from locally-grown seaweed.
Don't miss THE OCEAN 2020 digital conference!
THE OCEAN 2020 is an innovative event on 17 September that seeks to drive collaboration and crossovers within the ocean industries.


text:
The Canadian Underage Substance Use Prevention (CUSP) Trial is a multi-site, pan-Canadian study that aims to evaluate the long-term effects of PreVenture on preventing risk behaviours that can lead to substance misuse amongst senior high school students. The study is funded by the Canadian Institute of Health Research (CIHR).
Despite having made some strides towards reducing adolescent drinking rates, illicit substance use and substance use disorders remain significantly above national targets for health promotion and disease prevention in Canada. Of particular concern is the emerging prescription drug use crisis in Canada. Adolescence and early adulthood is the usual age of onset of prescription drug abuse, with 15-25 year olds reporting the highest and fastest growing rates of prescription drug misuse of any age group in the country.
There is a pressing need for effective substance abuse prevention in Canada, particularly targeted intervention strategies designed to help those most at risk of transitioning to substance use disorders. Yet, very few programs have been developed to effectively address illicit drug use among adolescents and even fewer have been evaluated with respect to efficacy in preventing non-medical prescription drug use. Moreover, less than 15% of North American adolescents are exposed to evidence-based prevention interventions.
This cluster randomized controlled trial involves four sites: a coordinating site in Quebec and three study sites in British Columbia, Ontario and Nova Scotia. The three sites will each recruit nine high schools randomized to three intervention conditions. Students from grade 10 enrolled in these schools in 2019, 2020 and 2021 will be invited to participate, resulting in approximately 4050 students across 27 schools each year, a total of 12,150 students over three years. Eligible students (approximately 45%) at each school will be invited to attend two PreVenture workshops.
To accelerate evidence needed to increase scale-up of this effective program this study will involve both an Effectiveness trial and an Implementation Facilitation trial. Firstly, the study will test the effectiveness of PreVenture when disseminated through a Train-the-Trainer implementation model. Consenting grade 10 students will be assessed on measures of past 12-month substance use onset as well as severity of use. Secondly, to address questions about program sustainability and scale-up, the study will apply state-of-the-art methods in implementation science to examine a novel Implementation Facilitation component to support effective and sustained delivery of PreVenture.
Dr Patricia Conrod (Study Lead, Quebec Site)
Dr Jürgen Rehm (Evaluation Lead, CAMH)
Dr Hayley Hamilton (Ontario Site Lead, CAMH)
Dr Sherry Stewart (Nova Scotia Site Lead, Dalhousie)
Dr Marvin Krank (British Columbia Lead, UBCO)
Dr Chris Richardson (UBCO)
Dr David Smith (BC Interior Health)
Dr Joanna Henderson (CAMH)
Dr Ranmalie Jayasinha (Study Coordinator, Quebec Site)
Rashmi Narkar (Research Assistant, Ontario Site)
Kyle McKee (Research Assistant, Nova Scotia Site)
Sherry Hanna (Research Assistant, British Columbia Site)
Youth Vaping Is Now An 'Epidemic'
U.S. Surgeon General Vice Adm. Jerome M. Adams issued an advisory today stressing the importance of protecting children from a lifetime of nicotine addiction and associated health risks by immediately addressing the epidemic of youth e-cigarette use.
[Publication]
PreVenture Training Week in Kelowna, BC
Thanks to Dr Marvin Krank and his team at the University of British Columbia, Okanagan Campus for hosting a successful PreVenture Training week in February 2019 for the first phase of the CUSP Trial. Dr Patricia Conrod delivered a two day Train-the-Trainer workshop to a range of participants, including trainees from BC Interior Health, school counselors from four school districts in the region, as well as CUSP trainees from BC, Ontario and Nova Scotia who will become local Expert Trainers for the Trial. In addition, we had the opportunity to deliver PreVenture workshops to over 70 students at four high schools schools in the Vernon area.
CUSP Trial Awarded $1.7 million CIHR Grant
The Canadian Institute of Health Research has awarded the Canadian Underage Substance use Prevention (CUSP) Trial, led by Dr. Patricia Conrod at CHU Sainte-Justine, funding for five years


You can book all treatments at Indulgence Beauty Salon online quickly and easily by clicking below or by using the Indulgence Beauty Salon App for Iphone and Android.
All clients are required to complete a Digital consultation form prior to commencing treatments. Please arrive 10 minutes before your appointment time to complete this form.
Before every treatment, even when you have completed the form in the past, we will ask you to advise us of any changes since your last treatment, or confirm if there are no changes.
This is for your safety, to make sure we give you the right advice and treatment, and to ensure your wellbeing at all times.
You must read the Online Booking Terms & Conditions before making your booking. By completing a booking online, or via our app, you are agreeing to our rules, terms and conditions.
IMPORTANT INFORMATION – PATCH TEST: All treatments which require a patch test can be booked online. However, you must ensure you have a patch test carried out at an Indulgence Salon at least 48 hours prior to your treatment. Anyone who has not had a treatment within the last six months must have a repeat patch test before his or her treatment. Failure to have a patch test will result in the Salon being unable to carry out the treatment and a 100% cancellation policy will apply.
A minimum deposit of 60p must be paid when booking appointments online.
We operate a 24 hour notice reschedule/cancellation policy. If you are unable to attend your appointment or wish to reschedule, you must contact the Indulgence salon directly by phone or by email at least 24 hours prior to your appointment time. Contact 0208 304 7220 or email: info@indulgencebeauty.com. If you fail to give 24 hours' cancellation notice you will be charged 100% of the treatment cost.
Out of consideration for other clients, if you are more than 15 minutes late for an appointment you may have to reschedule, which may result in you incurring additional costs.
You cannot cancel or rearrange an appointment online. You must contact the salon directly.
If you fail to cancel an appointment which you have booked online, you will incur the 100% cancellation fee.
We will try wherever possible to accommodate your requests for particular therapists, however, due to the practicalities of operating procedure this request may not always be fulfilled.
Pregnant women are unable to have any treatments which require a patch test.
Certain medical conditions and Pregnancy may be contra-indication to a range of treatments. If you have an existing medical condition, please do not book online, before speaking directly to the salon, to determine if you can indeed book the treatment. Failure to confirm that the treatment required can be carried out with an existing medical condition may result in your appointment being cancelled and your deposit retained.


text:
Q: RewriteRule to show root I recently finished developing a new website for my domain and today I want to push it "live" by making it available to whoever visits the root of my domain example.com.
However, I don't want to be moving moving files back and forth between directories in order to "archive" the old site and have the new one available.
Instead, I added the following RewriteRule in my .htaccess:
RewriteRule ^((?!(newsite)|(oldsite)).+)$ /newsite/$1 [NC,L]

My old website is in the root while the new one under /newsite.
Now when I visit my website example.com it correctly displays the content of the site which under the directory /newsite but without making that visible in the URL. So far so good.
However, now I want the old website to be visible if a special "fake" directory is provided in the URL. So I want example.com/oldsite to load the contents from the root.
Here's an illustration of my folder tree, and what I want:
root                 <--- accessible from 'example.com/oldsite'
├──index.php
├──css               <--- accessible from 'example.com/oldsite/css'
├──js
└──newsite           <--- accessible from 'example.com'
   ├──index.php
   ├──css            <--- accessible from 'example.com/css'
   └──js

I tried changing the .htaccess to:
RewriteRule ^((?=oldsite).+)$ $1 [NC,L]
RewriteRule ^((?!(newsite)|(oldsite)).+)$ /newsite/$1 [NC,L]

but this doesn't work. Other things I tried rendered the site in a redirect loop. Is there a way to achieve this?

A: You can use these 2 rewrite rules in your site root .htaccess:
RewriteEngine On

# load newsite if not newsite and not oldsite
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^((?!(?:newsite|oldsite)).*)$ newsite/$1 [NC,L]

# load root if request is newsite
RewriteRule ^oldsite(/.*)?$ /$1 [L,NC]


The Planetary Society's LightSail-A spacecraft is less than three weeks away from an expected go/no-go decision on whether the CubeSat will be launched into space for a shakedown cruise next year. Vibration tests in late October revealed a handful of problems that are being corrected. The most troubling of these was the spacecraft's solar panels, which managed to jiggle open on the shake table. A closer look by the LightSail team revealed the burn wire responsible for releasing the solar arrays was broken. To fix the problem, Ecliptic Enterprises Corporation created a new burn wire design. Tests of the new design are already underway. If all goes well, LightSail-A will go back into vibration testing later next week, and stay on target for delivery to Cal Poly in early December.
LightSail's broken burn wire, which snapped during vibration testing in late October.
Each of LightSail's four solar panels are hinged on one side. Left untethered, they swing open into the deployed state you've seen in artist's concepts and testing videos. During LightSail's ride to space—as well as the on-orbit phase of the mission prior to sail deployment—the panels are held shut by a fishing line-like material called spectraline. The spectraline feeds through a small coil of Nickel-Chromium called a burn wire. When it's time for solar panel deployment, the burn wire gets a jolt of power—about 2 amps. The wire quickly heats up, and in just one second, it's hot enough to burn through the spectraline. The solar panels are free, and swing open into space.
Currently, each solar panel is tied to an adjacent panel, with the spectraline pulled tightly against the burn wire. Thus, when LightSail shakes violently during vibration testing (or during its eventual ride to orbit), the brunt of the force from the spectraline is sent into the burn wire itself. During testing, this caused the burn wire to break, which would be catastrophic during flight. Without the burn wire, the panels—and thus, the solar sails—would never deploy.
LightSail's current burn wire configuration, in which each solar panel is tied to an adjacent panel.
Ecliptic created a new design in which each panel is tied to its opposite (rather than adjacent) panel, reducing the amount of force on the burn wire. The thickness of the wire, which is currently 30 gauge, is being increased to 24 gauge. Finally, the wire is being bonded to the spacecraft with additional epoxy.
LightSail's new burn wire configuration, in which each solar panel is tied to an opposite, rather than adjacent, panel.
Next week, the Ecliptic team hopes to implement the new design on the flight unit. They will take the spacecraft from Pasadena back to Cal Poly for another vibration test. After that, LightSail makes a trip through the thermal vacuum chamber.
And if all that works? Cal Poly will take the spacecraft and integrate it for launch. Stay tuned.
I'm not sure increasing the wire gauge will help, and may actually hurt. I am surprised that the wire broke where it did, indicating nicks or bending stress-risers may have been added when it was formed. The wire should also be attached using soldered or welded ring terminals. NEVER use crimp-type terminals in a high-vibration environment as this creates stress-risers at the connection. It wouldn't hurt to have the wire assembly electro-polished after formed and the rings attached as this can relieve overall stresses and eliminate even microscopic stress-riser points.
Another thought that occurs to me is that if the burn-wire that broke had been heated and cooled repeatedly during testing, the break points probably correspond to the boundary locations that the heat-treatment reduced the ductility. BTW, the reason I suggested electro-polishing is that it has been shown to greatly improve the life of springs, so if you can't otherwise eliminate vibration induced movement, this is a potential way to help postpone fatigue-type failures.
I was wondering if Ecliptic has their own shake table that they can use before sending the S/C back for flight testing.
If they also have high speed imaging capability they may be able to see the extent of the vibration then reexamine the wiring for any obvious signs of stress. Sure microscopic stress levels will take additional equipment and I know time is not on our side. At least we found these problems now and not learned of them on orbit.
Have you tried to listen to the tightly pulled spectraline. Try to play guitar with it and listen what the resonance frequency is. This might help to know when the strongest movement occurs.


text:
By Simon Applebaum Tomorrow Will Be Televised Archives
Blacktag promises to be one of the first groundbreaking content enterprises of 2021, featuring African-Ameriican programming creators in a combo Netflix/YouTube manner. The full details from Chief Executive Akin Adebowale and President Ousman Sakko Sow. We'll also preview season four of Fox's popular medical drama The Residentwith executive producers Andrew Chapman and Peter Elkoff.
This episode can be heard here. You can catch other recent Tomorrow Will Be Televised episodes at BlogTalk Radio, iTunes, Apple TV, Spreaker podcasts, TuneIn Radio and IHeart Radio's podcast network.
Simon Applebaum
Simon Applebaum has covered the TV medium for more than 38 years. Now a regular MediaVillage columnist, he produces and hosts Tomorrow Will Be Televised, a program all about TV, now in its 12th year. Previously, he was a senior editor for various TV-centric …


Sometimes we are just under the wrong spell; frequent colds, fatigue, insomnia, anxiety, depression, unexplained aches, pains and other discomforts. Sometimes we're just stuck, unable to break the pattern, and sometimes, we don't even realize that there is a pattern. We are just not quite ourselves, not quite as vital as we once were, despite doctor's reassurances of perfect health.
When we are not thriving, it's a sure sign that we are in need of healing. Healing – takes guts. Guts to look at your wounds. Conventional medicine is not very good at assisting with this process so we turn to the wisdom of the old medicine that is much better at bewitching: mending, nurturing, and enabling one to feel vital and to thrive physically and emotionally.
BewitcheryInc aims to explore ways of staying happy and healthy through the use of adaptogenic herbs, herbal remedies, forgotten wisdoms, spells, synchronistic events, and other things. By turning to the old ways in order to tackle modern afflictions, I hope to support the healing journeys and experiences of those who are seeking to live under a different spell.


text:
Pentagon calls mystery missile 'unexplained'
March 15, 2017 November 10, 2010 by Richard Moore
http://www.heraldsun.com.au/news/breaking-news/pentagon-calls-mystery-missile-unexplained-cannot-rule-out-threat/story-e6frf7jx-1225950540060
http://tinyurl.com/39o3g6g
Pentagon calls mystery missile 'unexplained,' cannot rule out threat
NewsCore
November 10, 2010 3:42AM
THE Pentagon said a missile launch off the southern coast of California remained "unexplained" and that its mysterious origins meant that it was not possible to rule out any threat to the homeland.
Earlier yesterday, NORAD (North American Aerospace Defense Command) and NORTHCOM (United States Northern Command) officials told Fox there was no threat.
However, Pentagon Spokesman Colonel Dave Lapan would not confirm that because the military does not know what the missile was or where it came from.
Col Lapan added that the incident did not appear to be a regularly scheduled test, as no warnings to mariners or airmen appeared to be issued ahead of its launch.
The contrail was caught on camera by a KCBS news helicopter at around sunset Monday evening, approximately 50km out to sea and west of Los Angeles.
The missile appeared to be launched from the water, and not from US soil, Col Lapan added.
The military was trying to solve the mystery using the video from KCBS as there was no indication that NORAD and NORTHCOM were able to detect it independently.
According to Fox News, NORAD and NORTHCOM would only say they were aware of the launch.
However one unnamed senior defense official added: "There was no threat to the homeland."
A navy spokesperson previously told KCBS that no navy activity was reported in the region.
A sergeant at Vandenberg Air Force Base in Santa Barbara County said a Delta II rocket was launched from the base last Friday, but insisted there were no launches since then.
On viewing the footage, former deputy defense secretary Robert Ellsworth speculated on KCBS that the launch could be a show of military muscle.
"It could be a test-firing of an intercontinental ballistic missile from a submarine … to demonstrate, mainly to Asia, that we can do that," Mr Ellsworth said.
2012: Crossroads for Humanity:
http://rkmdocs.blogspot.com/2010/07/toc-2012.html
Climate science: observations vs. models
http://rkmdocs.blogspot.com/2010/01/climate-science-observations-vs-models.html
http://groups.yahoo.com/group/cyberjournal/messages
http://groups.yahoo.com/group/newslog/messages
video: Mystery Missile Launched in Los Angeles


text:
#include <hip_test_common.hh>
#include <hip_test_checkers.hh>
#include <fstream>
#include <vector>

#ifdef __linux__
#include <unistd.h>
#include <sys/mman.h>
#include <sys/wait.h>

// Common Definitions and Macros
#if HT_AMD
  static const char* visibility_env_var = "HIP_VISIBLE_DEVICES";
#else
  static const char* visibility_env_var = "CUDA_VISIBLE_DEVICES";
#endif

#define UNUSED(expr) do { (void)(expr); } while (0)

void Callback(hipStream_t stream, hipError_t status,
                       void* userData) {
  UNUSED(stream);
  HIP_CHECK(status);
  REQUIRE(userData == NULL);
}

// Dummy RTC function
static constexpr auto rtcfn {
    R"(
extern "C"
__global__ void fn()
{
}
)"};

// Dummy Kernel Function
static __global__ void fn() {
}

// No GPU test case for hipGetDeviceCount
static bool NoGpuTst_hipGetDeviceCount() {
  bool passed = false;
  hipError_t err;
  int nGpus = 0;
  err = hipGetDeviceCount(&nGpus);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipGetDeviceCount: " <<
        hipGetErrorName(err));
  }
  return passed;
}

// No GPU test case for hipSetDevice
static bool NoGpuTst_hipSetDevice() {
  bool passed = false;
  hipError_t err;
  err = hipSetDevice(0);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipSetDevice: " <<
        hipGetErrorName(err));
  }
  return passed;
}

// No GPU test case for hipDeviceGetAttribute
static bool NoGpuTst_hipDeviceGetAttribute() {
  bool passed = false;
  hipError_t err;
  int pi = 0;
  hipDeviceAttribute_t attr = hipDeviceAttributeCudaCompatibleBegin;
  err = hipDeviceGetAttribute(&pi, attr, 0);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipDeviceGetAttribute: " <<
        hipGetErrorName(err));
  }
  return passed;
}

// No GPU test case for hipDeviceGetP2PAttribute
static bool NoGpuTst_hipDeviceGetP2PAttribute() {
  bool passed = false;
  hipError_t err;
  int srcDevice = 0, dstDevice = 1;
  int value{-1};
  err = hipDeviceGetP2PAttribute(&value, hipDevP2PAttrPerformanceRank,
                                 srcDevice, dstDevice);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipDeviceGetP2PAttribute: " <<
        hipGetErrorName(err));
  }
  return passed;
}

// No GPU test case for hipDeviceGetPCIBusId
static bool NoGpuTst_hipDeviceGetPCIBusId() {
  bool passed = false;
  hipError_t err;
  int device = 0;
  char pciBusId[128];
  err = hipDeviceGetPCIBusId(pciBusId, 128, device);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipDeviceGetPCIBusId: " <<
        hipGetErrorName(err));
  }
  return passed;
}

// No GPU test case for hipDeviceGetByPCIBusId
static bool NoGpuTst_hipDeviceGetByPCIBusId() {
  bool passed = false;
  hipError_t err;
  int device = 0;
  char pciBusId[128];
  err = hipDeviceGetByPCIBusId(&device, pciBusId);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipDeviceGetByPCIBusId: " <<
        hipGetErrorName(err));
  }
  return passed;
}

// No GPU test case for hipDeviceTotalMem
static bool NoGpuTst_hipDeviceTotalMem() {
  bool passed = false;
  hipError_t err, err_exp;
#if HT_AMD
  err_exp = hipErrorNoDevice;
#else
  err_exp = hipErrorNotInitialized;
#endif
  int device = 0;
  size_t bytes = 0;
  err = hipDeviceTotalMem(&bytes, device);
  if (err == err_exp) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipDeviceTotalMem: " <<
        hipGetErrorName(err));
  }
  return passed;
}

// No GPU test case for hipFuncSetSharedMemConfig
static bool NoGpuTst_hipFuncSetSharedMemConfig() {
  bool passed = false;
  hipError_t err;
  err = hipFuncSetSharedMemConfig(reinterpret_cast<const void*>(&fn),
                                  hipSharedMemBankSizeDefault);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipFuncSetSharedMemConfig: " <<
        hipGetErrorName(err));
  }
  return passed;
}

// No GPU test case for hipStreamCreate
static bool NoGpuTst_hipStreamCreate() {
  bool passed = false;
  hipError_t err;
  hipStream_t stream = nullptr;
  err = hipStreamCreate(&stream);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipStreamCreate: " <<
        hipGetErrorName(err));
  }
  return passed;
}

// No GPU test case for hipStreamCreateWithPriority
static bool NoGpuTst_hipStreamCreateWithPriority() {
  bool passed = false;
  hipError_t err;
  hipStream_t mystream = nullptr;
  err = hipStreamCreateWithPriority(&mystream, 0, 0);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipStreamCreateWithPriority: " <<
        hipGetErrorName(err));
  }
  return passed;
}

// No GPU test case for hipStreamSynchronize
static bool NoGpuTst_hipStreamSynchronize() {
  bool passed = false;
  hipError_t err;
  err = hipStreamSynchronize(0);  // sync with null stream
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipStreamSynchronize: " <<
        hipGetErrorName(err));
  }
  return passed;
}

// No GPU test case for hipStreamGetFlags
static bool NoGpuTst_hipStreamGetFlags() {
  bool passed = false;
  hipError_t err;
  unsigned int flags = 0;
  err = hipStreamGetFlags(0, &flags);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipStreamGetFlags: " <<
        hipGetErrorName(err));
  }
  return passed;
}
#if HT_AMD
// No GPU test case for hipExtStreamCreateWithCUMask
static bool NoGpuTst_hipExtStreamCreateWithCUMask() {
  bool passed = false;
  hipError_t err;
  hipStream_t mystream = nullptr;
  uint32_t cuMaskSize = 0;
  const uint32_t cuMask = 0;
  err = hipExtStreamCreateWithCUMask(&mystream, cuMaskSize, &cuMask);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipExtStreamCreateWithCUMask: " <<
        hipGetErrorName(err));
  }
  return passed;
}
#endif
// No GPU test case for hipStreamAddCallback
static bool NoGpuTst_hipStreamAddCallback() {
  bool passed = false;
  hipError_t err;
  void* userData = NULL;
  unsigned int flags = 0;
  err = hipStreamAddCallback(0, Callback, userData, flags);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipStreamAddCallback: " <<
        hipGetErrorName(err));
  }
  return passed;
}

// No GPU test case for hipEventCreateWithFlags
static bool NoGpuTst_hipEventCreateWithFlags() {
  bool passed = false;
  hipError_t err;
  hipEvent_t event = 0;
  err = hipEventCreateWithFlags(&event, hipEventDefault);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipEventCreateWithFlags: " <<
        hipGetErrorName(err));
  }
  return passed;
}

// No GPU test case for hipDeviceSynchronize
static bool NoGpuTst_hipDeviceSynchronize() {
  bool passed = false;
  hipError_t err;
  err = hipDeviceSynchronize();
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipDeviceSynchronize: " <<
        hipGetErrorName(err));
  }
  return passed;
}

// No GPU test case for hipGetDevice
static bool NoGpuTst_hipGetDevice() {
  bool passed = false;
  hipError_t err;
  int deviceId = 0;
  err = hipGetDevice(&deviceId);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipGetDevice: " <<
        hipGetErrorName(err));
  }
  return passed;
}

// No GPU test case for hipDeviceGetCacheConfig
static bool NoGpuTst_hipDeviceGetCacheConfig() {
  bool passed = false;
  hipError_t err;
  hipFuncCache_t cacheConfig = hipFuncCachePreferNone;
  err = hipDeviceGetCacheConfig(&cacheConfig);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipDeviceGetCacheConfig: " <<
        hipGetErrorName(err));
  }
  return passed;
}

// No GPU test case for hipDeviceGetSharedMemConfig
static bool NoGpuTst_hipDeviceGetSharedMemConfig() {
  bool passed = false;
  hipError_t err;
  hipSharedMemConfig pConfig = hipSharedMemBankSizeDefault;
  err = hipDeviceGetSharedMemConfig(&pConfig);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipDeviceGetSharedMemConfig: " <<
        hipGetErrorName(err));
  }
  return passed;
}

// No GPU test case for hipDeviceSetSharedMemConfig
static bool NoGpuTst_hipDeviceSetSharedMemConfig() {
  bool passed = false;
  hipError_t err;
  hipSharedMemConfig pConfig = hipSharedMemBankSizeDefault;
  err = hipDeviceSetSharedMemConfig(pConfig);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipDeviceSetSharedMemConfig: " <<
        hipGetErrorName(err));
  }
  return passed;
}

// No GPU test case for hipPointerGetAttributes
static bool NoGpuTst_hipPointerGetAttributes() {
  bool passed = false;
  hipError_t err;
  hipPointerAttribute_t attributes = {};
  char* A_d;
  err = hipPointerGetAttributes(&attributes, A_d);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipPointerGetAttributes: " <<
        hipGetErrorName(err));
  }
  return passed;
}
#if HT_AMD
// No GPU test case for hipExtMallocWithFlags
static bool NoGpuTst_hipExtMallocWithFlags() {
  bool passed = false;
  hipError_t err;
  int *Ptr = nullptr;
  unsigned int flags = 0;
  err = hipExtMallocWithFlags(reinterpret_cast<void**>(Ptr), 128, flags);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipExtMallocWithFlags: " <<
        hipGetErrorName(err));
  }
  return passed;
}
#endif
// No GPU test case for hipMallocManaged
static bool NoGpuTst_hipMallocManaged() {
  bool passed = false;
  hipError_t err;
  float *dev_ptr;
  err = hipMallocManaged(&dev_ptr, 128, hipMemAttachGlobal);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipMallocManaged: " <<
        hipGetErrorName(err));
  }
  return passed;
}

// No GPU test case for hipHostFree
static bool NoGpuTst_hipHostFree() {
  bool passed = false;
  hipError_t err;
  void* ptr1 = nullptr;
  err = hipHostFree(ptr1);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipHostFree: " <<
        hipGetErrorName(err));
  }
  return passed;
}

// No GPU test case for hipMemcpyWithStream
static bool NoGpuTst_hipMemcpyWithStream() {
  bool passed = false;
  hipError_t err;
  int *A_h, *B_h;
  A_h = reinterpret_cast<int*>(malloc(sizeof(int)));
  REQUIRE(A_h != nullptr);
  B_h = reinterpret_cast<int*>(malloc(sizeof(int)));
  REQUIRE(B_h != nullptr);
  err = hipMemcpyWithStream(A_h, B_h, 128, hipMemcpyHostToHost, 0);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipMemcpyWithStream: " <<
        hipGetErrorName(err));
  }
  return passed;
}

#if HT_AMD
// No GPU test case for hipMallocMipmappedArray
static bool NoGpuTst_hipMallocMipmappedArray() {
  bool passed = false;
  hipError_t err;
  hipMipmappedArray_t mipmappedArray{};
  hipExtent extent;
  hipChannelFormatDesc desc = hipCreateChannelDesc<int>();
  err = hipMallocMipmappedArray(&mipmappedArray, &desc, extent, 0, 0);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipMallocMipmappedArray: " <<
        hipGetErrorName(err));
  }
  return passed;
}
#endif
// No GPU test case for hipDeviceEnablePeerAccess
static bool NoGpuTst_hipDeviceEnablePeerAccess() {
  bool passed = false;
  hipError_t err;
  int peerDeviceId = 0;
  err = hipDeviceEnablePeerAccess(peerDeviceId, 0);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipDeviceEnablePeerAccess: " <<
        hipGetErrorName(err));
  }
  return passed;
}

// No GPU test for hipHostMalloc() API
static bool NoGpuTst_hipHostMalloc() {
  bool passed = false;
  hipError_t err;
  int *ptr;
  size_t size = 1024;
  unsigned int flag = hipHostMallocDefault;
  err = hipHostMalloc(&ptr, size, flag);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipHostMalloc: " <<hipGetErrorName(err));
  }
  return passed;
}

// No GPU test for hipMalloc() API
static bool NoGpuTst_hipMalloc() {
  bool passed = false;
  hipError_t err;
  int *ptr;
  size_t size = 1024;
  err = hipMalloc(&ptr, size);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipMalloc: " <<hipGetErrorName(err));
  }
  return passed;
}

// No GPU test for hipHostRegister() API
static bool NoGpuTst_hipHostRegister() {
  bool passed = false;
  hipError_t err;
  size_t size = 1024;
  unsigned int reg_flag = hipHostRegisterDefault;
  void * hostPtr = reinterpret_cast<void*>(malloc(size));
  err = hipHostRegister(hostPtr, size, reg_flag);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipHostRegister: " <<hipGetErrorName(err));
  }
  return passed;
}

// No GPU test for hipMemcpy() API
static bool NoGpuTst_hipMemcpy() {
  bool passed = false;
  hipError_t err;
  size_t size = 1024;
  int *dst = reinterpret_cast<int*>(malloc(size));
  int *src = reinterpret_cast<int*>(malloc(size));
  err = hipMemcpy(dst, src, size, hipMemcpyHostToHost);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipMemcpy: " <<hipGetErrorName(err));
  }
  return passed;
}

// No GPU test for hipMemAllocPitch() API
static bool NoGpuTst_hipMemAllocPitch() {
  bool passed = false;
  hipError_t err, err_exp;
#if HT_AMD
  err_exp = hipErrorNoDevice;
#else
  err_exp = hipErrorNotInitialized;
#endif
  size_t pitch;
  hipDeviceptr_t dptr;
  size_t widthInBytes = 128;
  size_t height = 128;
  unsigned int elementSizeBytes = 4;
  err = hipMemAllocPitch(&dptr, &pitch, widthInBytes, height, elementSizeBytes);
  if (err == err_exp) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipMemAllocPitch: " <<hipGetErrorName(err));
  }
  return passed;
}

// No GPU test for hipMemGetInfo() API
static bool NoGpuTst_hipMemGetInfo() {
  bool passed = false;
  hipError_t err;
  size_t free, total;
  err = hipMemGetInfo(&free, &total);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipMemGetInfo: " <<hipGetErrorName(err));
  }
  return passed;
}

// No GPU test for hipMalloc3DArray() API
static bool NoGpuTst_hipMalloc3DArray() {
  bool passed = false;
  hipError_t err;
  hipArray_t array;
  hipChannelFormatDesc desc = hipCreateChannelDesc<int>();
  hipExtent extent = make_hipExtent(64, 64, 64);
  err = hipMalloc3DArray(&array, &desc, extent, hipArrayDefault);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipMalloc3DArray: " <<hipGetErrorName(err));
  }
  return passed;
}

// No GPU test for hipDeviceCanAccessPeer() API
static bool NoGpuTst_hipDeviceCanAccessPeer() {
  bool passed = false;
  hipError_t err;
  int canAccessPeer; int deviceId1 = 0; int peerDeviceId = 1;
  err =  hipDeviceCanAccessPeer(&canAccessPeer, deviceId1, peerDeviceId);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipDeviceCanAccessPeer: "
          <<hipGetErrorName(err));
  }
  return passed;
}

// No GPU test for hipDeviceDisablePeerAccess() API
static bool NoGpuTst_hipDeviceDisablePeerAccess() {
  bool passed = false;
  hipError_t err;
  err =  hipDeviceDisablePeerAccess(1);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipDeviceDisablePeerAccess: "
          <<hipGetErrorName(err));
  }
  return passed;
}

// No GPU test for hipDeviceGet() API
static bool NoGpuTst_hipDeviceGet() {
  bool passed = false;
  hipError_t err, err_exp;
#if HT_AMD
  err_exp = hipErrorNoDevice;
#else
  err_exp = hipErrorNotInitialized;
#endif
  hipDevice_t device;
  int ordinal = 0;
  err =  hipDeviceGet(&device, ordinal);
  if (err == err_exp) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipDeviceGet: " <<hipGetErrorName(err));
  }
  return passed;
}

// No GPU test for hipDeviceComputeCapability() API
static bool NoGpuTst_hipDeviceComputeCapability() {
  bool passed = false;
  hipError_t err, err_exp;
#if HT_AMD
  err_exp = hipErrorNoDevice;
#else
  err_exp = hipErrorNotInitialized;
#endif
  int major;
  int minor;
  err = hipDeviceComputeCapability(&major, &minor, 0);
  if (err == err_exp) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipDeviceComputeCapability: "
          <<hipGetErrorName(err));
  }
  return passed;
}

// No GPU test for hipDeviceGetName() API
static bool NoGpuTst_hipDeviceGetName() {
  bool passed = false;
  hipError_t err, err_exp;
#if HT_AMD
  err_exp = hipErrorNoDevice;
#else
  err_exp = hipErrorNotInitialized;
#endif
  char name[256];
  int len = 256;
  err = hipDeviceGetName(name, len, 0);
  if (err == err_exp) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipDeviceGetName: " <<hipGetErrorName(err));
  }
  return passed;
}

// No GPU test for hipGetDeviceProperties() API
static bool NoGpuTst_hipGetDeviceProperties() {
  bool passed = false;
  hipError_t err;
  int deviceId = 0;
  hipDeviceProp_t prop;
  err =  hipGetDeviceProperties(&prop, deviceId);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipGetDeviceProperties: "
          <<hipGetErrorName(err));
  }
  return passed;
}

// No GPU test for hipChooseDevice() API
static bool NoGpuTst_hipChooseDevice() {
  bool passed = false;
  hipError_t err;
  int device;
  hipDeviceProp_t prop;
  prop.major = 0;
  prop.minor = 0;
  err = hipChooseDevice(&device, &prop);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipChooseDevice: " <<hipGetErrorName(err));
  }
  return passed;
}
#if HT_AMD
// No GPU test for hipExtGetLinkTypeAndHopCount() API
static bool NoGpuTst_hipExtGetLinkTypeAndHopCount() {
  bool passed = false;
  hipError_t err;
  uint32_t linktype;
  uint32_t hopcount;
  err = hipExtGetLinkTypeAndHopCount(0, 1, &linktype, &hopcount);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipExtGetLinkTypeAndHopCount: "
          <<hipGetErrorName(err));
  }
  return passed;
}

// No GPU test for hipExtStreamGetCUMask() API
static bool NoGpuTst_hipExtStreamGetCUMask() {
  bool passed = false;
  hipError_t err;
  uint32_t cuMaskSize = 1024;
  uint32_t cuMask;
  err = hipExtStreamGetCUMask(0, cuMaskSize, &cuMask);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipExtStreamGetCUMask: "
          <<hipGetErrorName(err));
  }
  return passed;
}
#endif

// No GPU test for hipFuncSetAttribute() API
static bool NoGpuTst_hipFuncSetAttribute() {
  bool passed = false;
  hipError_t err;
  hipFuncAttribute attr = hipFuncAttributeMaxDynamicSharedMemorySize;
  err = hipFuncSetAttribute(reinterpret_cast<const void*>(&fn), attr, 0);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipFuncSetAttribute: "
          <<hipGetErrorName(err));
  }
  return passed;
}

// No GPU test for hipFuncSetCacheConfig() API
static bool NoGpuTst_hipFuncSetCacheConfig() {
  bool passed = false;
  hipError_t err;
  hipFuncCache_t config = hipFuncCachePreferShared;
  err = hipFuncSetCacheConfig(reinterpret_cast<const void*>(&fn), config);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipFuncSetCacheConfig: "
          <<hipGetErrorName(err));
  }
  return passed;
}

// No GPU test for hipStreamCreateWithFlags() API
static bool NoGpuTst_hipStreamCreateWithFlags() {
  bool passed = false;
  hipError_t err;
  hipStream_t stream;
  unsigned int flags = 0;
  err =  hipStreamCreateWithFlags(&stream, flags);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipStreamCreateWithFlags: "
          <<hipGetErrorName(err));
  }
  return passed;
}

// No GPU test for hipDeviceGetStreamPriorityRange() API
static bool NoGpuTst_hipDeviceGetStreamPriorityRange() {
  bool passed = false;
  hipError_t err;
  int leastPriority;
  int greatestPriority;
  err =  hipDeviceGetStreamPriorityRange(&leastPriority, &greatestPriority);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipDeviceGetStreamPriorityRange: "
          <<hipGetErrorName(err));
  }
  return passed;
}

// No GPU test for hipEventCreate() API
static bool NoGpuTst_hipEventCreate() {
  bool passed = false;
  hipError_t err;
  hipEvent_t event;
  err = hipEventCreate(&event);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipEventCreate: " <<hipGetErrorName(err));
  }
  return passed;
}

// No GPU test for hipStreamGetPriority() API
static bool NoGpuTst_hipStreamGetPriority() {
  bool passed = false;
  hipError_t err;
  int priority;
  err =  hipStreamGetPriority(0, &priority);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipStreamGetPriority: "
          <<hipGetErrorName(err));
  }
  return passed;
}

// No GPU test for hipDeviceReset() API
static bool NoGpuTst_hipDeviceReset() {
  bool passed = false;
  hipError_t err;
  err = hipDeviceReset();
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipDeviceReset: " <<hipGetErrorName(err));
  }
  return passed;
}

// No GPU test for hipDeviceSetCacheConfig() API
static bool NoGpuTst_hipDeviceSetCacheConfig() {
  bool passed = false;
  hipError_t err;
  hipFuncCache_t cacheConfig = hipFuncCachePreferShared;
  err = hipDeviceSetCacheConfig(cacheConfig);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipDeviceSetCacheConfig: "
          <<hipGetErrorName(err));
  }
  return passed;
}

// No GPU test for hipDeviceGetLimit() API
static bool NoGpuTst_hipDeviceGetLimit() {
  bool passed = false;
  hipError_t err;
  size_t pValue;
  hipLimit_t limit = hipLimitStackSize;
  err =  hipDeviceGetLimit(&pValue, limit);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipDeviceGetLimit: " <<hipGetErrorName(err));
  }
  return passed;
}

// No GPU test for hipGetDeviceFlags() API
static bool NoGpuTst_hipGetDeviceFlags() {
  bool passed = false;
  hipError_t err;
  unsigned int flags;
  err =  hipGetDeviceFlags(&flags);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipGetDeviceFlags: " <<hipGetErrorName(err));
  }
  return passed;
}

// No GPU test for hipSetDeviceFlags() API
static bool NoGpuTst_hipSetDeviceFlags() {
  bool passed = false;
  hipError_t err;
  err = hipSetDeviceFlags(0);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipSetDeviceFlags: " <<hipGetErrorName(err));
  }
  return passed;
}

// No GPU test for hipModuleLoad() API
static bool NoGpuTst_hipModuleLoad() {
  bool passed = false;
  hipError_t err;
  hipModule_t module;
  err = hipModuleLoad(&module, "dummy_kernel.code");
#if HT_AMD
  if (err == hipErrorNoDevice) {
    passed = true;
  }
#else
  if (err == hipErrorNotInitialized) {
    passed = true;
  }
#endif
  if (passed == false) {
    WARN("Error Code Returned by hipModuleLoad: " << hipGetErrorName(err));
  }
  return passed;
}

// No GPU test for hipFuncGetAttributes() API
static bool NoGpuTst_hipFuncGetAttributes() {
  bool passed = false;
  hipError_t err;
  hipFuncAttributes attr{};
  err = hipFuncGetAttributes(&attr, reinterpret_cast<const void*>(&fn));
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipFuncGetAttributes: " <<
        hipGetErrorName(err));
  }
  return passed;
}

// No GPU test for hipModuleLoadData() API
static bool NoGpuTst_hipModuleLoadData() {
  bool passed = false;
  hipError_t err;
  hipModule_t module;
  std::ifstream file("dummy_kernel.code", std::ios::binary | std::ios::ate);
  std::streamsize fsize = file.tellg();
  file.seekg(0, std::ios::beg);
  std::vector<char> buffer(fsize);
  if (file.read(buffer.data(), fsize)) {
    err = hipModuleLoadData(&module, &buffer[0]);
#if HT_AMD
    if (err == hipErrorNoDevice) {
      passed = true;
    }
#else
    if (err == hipErrorNotInitialized) {
      passed = true;
    }
#endif
    if (passed == false) {
      WARN("Error Code Returned by hipModuleLoadData: " <<
            hipGetErrorName(err));
    }
  } else {
    WARN("File Read Failed");
  }
  return passed;
}

// No GPU test for hipModuleLoadDataEx() API
static bool NoGpuTst_hipModuleLoadDataEx() {
  bool passed = false;
  hipError_t err;
  hipModule_t module;
  std::ifstream file("dummy_kernel.code", std::ios::binary | std::ios::ate);
  std::streamsize fsize = file.tellg();
  file.seekg(0, std::ios::beg);
  std::vector<char> buffer(fsize);
  if (file.read(buffer.data(), fsize)) {
    err = hipModuleLoadDataEx(&module, &buffer[0], 0, nullptr, nullptr);
#if HT_AMD
    if (err == hipErrorNoDevice) {
      passed = true;
    }
#else
    if (err == hipErrorNotInitialized) {
      passed = true;
    }
#endif
    if (passed == false) {
      WARN("Error Code Returned by hipModuleLoadDataEx: " <<
            hipGetErrorName(err));
    }
  } else {
    WARN("File Read Failed");
  }
  return true;
}

// No GPU test for hipLaunchCooperativeKernel() API
static bool NoGpuTst_hipLaunchCooperativeKernel() {
  bool passed = false;
  hipError_t err;
  dim3 dimBlock = dim3(1);
  dim3 dimGrid  = dim3(1);
  err = hipLaunchCooperativeKernel(reinterpret_cast<void*>(fn),
        dimGrid, dimBlock, nullptr, 0, 0);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipLaunchCooperativeKernel: " <<
          hipGetErrorName(err));
  }
  return passed;
}

// No GPU test for hipLaunchCooperativeKernelMultiDevice() API
static bool NoGpuTst_hipLaunchCooperativeKernelMultiDevice() {
  bool passed = false;
  hipError_t err;
  dim3 dimBlock;
  dim3 dimGrid;
  dimGrid.x = 1;
  dimGrid.y = 1;
  dimGrid.z = 1;
  dimBlock.x = 64;
  dimBlock.y = 1;
  dimBlock.z = 1;
  hipLaunchParams md_params[1];
  void *dev_params[1][1];
  dev_params[0][0] = nullptr;
  md_params[0].func = reinterpret_cast<void*>(fn);
  md_params[0].gridDim = dimGrid;
  md_params[0].blockDim = dimBlock;
  md_params[0].sharedMem = 0;
  md_params[0].stream = hipStreamPerThread;
  md_params[0].args = dev_params[0];

  err = hipLaunchCooperativeKernelMultiDevice(md_params, 1, 0);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipLaunchCooperativeKernelMultiDevice: " <<
          hipGetErrorName(err));
  }
  return passed;
}

// No GPU test for hipExtLaunchMultiKernelMultiDevice() API
#if HT_AMD
static bool NoGpuTst_hipExtLaunchMultiKernelMultiDevice() {
  bool passed = false;
  hipError_t err;
  dim3 dimBlock;
  dim3 dimGrid;
  dimGrid.x = 1;
  dimGrid.y = 1;
  dimGrid.z = 1;
  dimBlock.x = 64;
  dimBlock.y = 1;
  dimBlock.z = 1;
  hipLaunchParams md_params[1];
  md_params[0].func = reinterpret_cast<void*>(fn);
  md_params[0].gridDim = dimGrid;
  md_params[0].blockDim = dimBlock;
  md_params[0].sharedMem = 0;
  md_params[0].stream = hipStreamPerThread;
  md_params[0].args = nullptr;

  err = hipExtLaunchMultiKernelMultiDevice(md_params, 1, 0);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipExtLaunchMultiKernelMultiDevice: " <<
          hipGetErrorName(err));
  }
  return passed;
}
#endif

// No GPU test for hipExtLaunchMultiKernelMultiDevice() API
static bool NoGpuTst_hipOccupancyMaxActiveBlocksPerMultiprocessor() {
  bool passed = false;
  hipError_t err;
  int numBlock = 0, blockSize = 256;
  err = hipOccupancyMaxActiveBlocksPerMultiprocessor(&numBlock,
        fn, blockSize, 0);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code hipOccupancyMaxActiveBlocksPerMultiprocessor: " <<
        hipGetErrorName(err));
  }
  return passed;
}

// No GPU test for hipOccupancyMaxActiveBlocksPerMultiprocessorWithFlags()
static bool NoGpuTst_hipOccupancyMaxActiveBlocksPerMultiprocessorFlags() {
  bool passed = false;
  hipError_t err;
  int numBlock = 0, blockSize = 256;
  err = hipOccupancyMaxActiveBlocksPerMultiprocessorWithFlags(&numBlock,
        fn, blockSize, 0, 0);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code hipOccupancyMaxActiveBlocksPerMultiprocessorWithFlags: "
         << hipGetErrorName(err));
  }
  return passed;
}

// No GPU test for hipOccupancyMaxPotentialBlockSize()
static bool NoGpuTst_hipOccupancyMaxPotentialBlockSize() {
  bool passed = false;
  hipError_t err;
  int blocksizelimit = 256, blockSize = 0, gridsize = 0;
  err = hipOccupancyMaxPotentialBlockSize(&gridsize, &blockSize, fn,
        0, blocksizelimit);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipOccupancyMaxPotentialBlockSize: " <<
        hipGetErrorName(err));
  }
  return passed;
}

// No GPU test for hiprtcVersion()
static bool NoGpuTst_hiprtcVersion() {
  bool passed = false;
  int major = 0, minor = 0;
  hiprtcResult err = hiprtcVersion(&major, &minor);
  if (err == HIPRTC_SUCCESS) {
    passed = true;
  } else {
    WARN("Error Code Returned by hiprtcVersion: " <<
        hiprtcGetErrorString(err));
  }
  return passed;
}

// No GPU test for hiprtcCreateProgram() and hiprtcDestroyProgram()
static bool NoGpuTst_hiprtcCreateProgram_DestroyProg() {
  bool passed = false;
  hiprtcProgram prog;
  hiprtcResult err = hiprtcCreateProgram(&prog, rtcfn, "rtcfn.cu",
                                        0, nullptr, nullptr);
  if (err == HIPRTC_SUCCESS) {
    passed = true;
    err = hiprtcDestroyProgram(&prog);
    if (err == HIPRTC_SUCCESS) {
      passed = true;
    } else {
      passed = false;
      WARN("Error Code Returned by hiprtcDestroyProgram: " <<
            hiprtcGetErrorString(err));
    }
  } else {
    WARN("Error Code Returned by hiprtcCreateProgram: " <<
        hiprtcGetErrorString(err));
  }
  return passed;
}

// No GPU test for hiprtcAddNameExpression()
static bool NoGpuTst_hiprtcAddNameExpression() {
  bool passed = false;
  hiprtcProgram prog;
  hiprtcResult err = hiprtcCreateProgram(&prog, rtcfn, "rtcfn.cu",
                                        0, nullptr, nullptr);
  if (err == HIPRTC_SUCCESS) {
    err = hiprtcAddNameExpression(prog, "dummy_func");
    if (err == HIPRTC_SUCCESS) {
      passed = true;
    } else {
      passed = false;
      WARN("Error Code Returned by hiprtcAddNameExpression: " <<
            hiprtcGetErrorString(err));
    }
  }
  if (err == HIPRTC_SUCCESS) {
    err = hiprtcDestroyProgram(&prog);
  }
  return passed;
}

// No GPU test for hipMallocPitch()
#define SIZE_H 20
#define SIZE_W 179
static bool NoGpuTst_hipMallocPitch() {
  bool passed = false;
  hipError_t err;
  int* devPtr;
  size_t devPitch;
  err = hipMallocPitch(reinterpret_cast<void**>(&devPtr), &devPitch,
                                       SIZE_W*sizeof(int), SIZE_H);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipMallocPitch: " <<
        hipGetErrorName(err));
  }
  return passed;
}

// No GPU test for hipMallocArray()
static bool NoGpuTst_hipMallocArray() {
  bool passed = false;
  hipError_t err;
  hipChannelFormatDesc channelDesc =
  hipCreateChannelDesc(32, 0, 0, 0, hipChannelFormatKindFloat);
  hipArray* hipArray;
  err = hipMallocArray(&hipArray, &channelDesc, 256, 256);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipMallocArray: " <<
        hipGetErrorName(err));
  }
  return passed;
}
#if HT_AMD
// No GPU test for hipMipmappedArrayCreate()
static bool NoGpuTst_hipMipmappedArrayCreate() {
  bool passed = false;
  hipError_t err;
  unsigned int width = 256, height = 256, mipmap_level = 2;
  unsigned int orig_width = width;
  unsigned int orig_height = height;
  width /= pow(2, mipmap_level);
  height /= pow(2, mipmap_level);

  hipChannelFormatDesc channelDesc = hipCreateChannelDesc(32, 0, 0,
                                    0, hipChannelFormatKindFloat);
  HIP_ARRAY3D_DESCRIPTOR mipmapped_array_desc;
  memset(&mipmapped_array_desc, 0x00, sizeof(HIP_ARRAY3D_DESCRIPTOR));
  mipmapped_array_desc.Width = orig_width;
  mipmapped_array_desc.Height = orig_height;
  mipmapped_array_desc.Depth = 0;
  mipmapped_array_desc.Format = HIP_AD_FORMAT_FLOAT;
  mipmapped_array_desc.NumChannels =
  ((channelDesc.x != 0) + (channelDesc.y != 0) +\
  (channelDesc.z != 0) + (channelDesc.w != 0));
  mipmapped_array_desc.Flags = 0;

  hipMipmappedArray* mip_array_ptr;
  err = hipMipmappedArrayCreate(&mip_array_ptr, &mipmapped_array_desc,
        2*mipmap_level);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipMipmappedArrayCreate: " <<
        hipGetErrorName(err));
  }
  return passed;
}
#endif
#define SMALL_SIZE 4
static bool NoGpuTst_hipMalloc3D() {
  bool passed = false;
  hipError_t err;
  size_t width = SMALL_SIZE * sizeof(char);
  size_t height{SMALL_SIZE}, depth{SMALL_SIZE};
  hipPitchedPtr devPitchedPtr;
  hipExtent extent = make_hipExtent(width, height, depth);
  err = hipMalloc3D(&devPitchedPtr, extent);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipMalloc3D: " <<
        hipGetErrorName(err));
  }
  return passed;
}

// No GPU test for hipGraphCreate() API
static bool NoGpuTst_hipGraphCreate() {
  bool passed = false;
  hipError_t err;
  hipGraph_t graph;

  err = hipGraphCreate(&graph, 0);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipGraphCreate: " <<
        hipGetErrorName(err));
  }
  return passed;
}

// No GPU test for hipStreamBeginCapture() API
static bool NoGpuTst_hipStreamBeginCapture() {
  bool passed = false;
  hipError_t err;

  err = hipStreamBeginCapture(0, hipStreamCaptureModeGlobal);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipStreamBeginCapture with null stream: " <<
        hipGetErrorName(err));
  }

  err = hipStreamBeginCapture(hipStreamPerThread, hipStreamCaptureModeGlobal);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipStreamBeginCapture with "
         "hipStreamPerThread stream: " << hipGetErrorName(err));
  }
  return passed;
}

// No GPU test for hipStreamIsCapturing() API
static bool NoGpuTst_hipStreamIsCapturing() {
  bool passed = false;
  hipError_t err;
  hipStreamCaptureStatus cStatus;

  err = hipStreamIsCapturing(0, &cStatus);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipStreamIsCapturing: " <<
        hipGetErrorName(err));
  }
  err = hipStreamIsCapturing(hipStreamPerThread, &cStatus);
  if (err == hipErrorNoDevice) {
    passed = true;
  } else {
    WARN("Error Code Returned by hipStreamIsCapturing with "
         "hipStreamPerThread stream: " << hipGetErrorName(err));
  }
  return passed;
}
// Common function invoking individual tests
static bool NoGpuTst_Common(bool(*test_fn)()) {
  bool passed = false;
  int *Ptr = reinterpret_cast<int*>(mmap(NULL, sizeof(int),
                                        PROT_READ | PROT_WRITE,
                                        MAP_SHARED|MAP_ANONYMOUS, 0, 0));
  if (Ptr == MAP_FAILED) {
    WARN("Mapping Failed\n");
    return false;
  }
  // forking to get number of gpus on this system
  if (fork() == 0) {  //  child process
    int TotlGpus = 0;
    static_cast<void>(hipGetDeviceCount(&TotlGpus));
    Ptr[0] = TotlGpus;
    exit(0);
  } else {  // parent process
    wait(NULL);
    if (Ptr[0] > 0) {  // If there are gpus active on the system
      if ((setenv(visibility_env_var, "-1", 1)) != 0) {
        WARN("Unable to turn on HIP_VISIBLE_DEVICES, hence exiting!");
        return false;
      }
      passed = test_fn();
    } else if (Ptr[0] == 0) {
      WARN("GPUs not available!");
      passed = test_fn();
    }
  }
  return passed;
}

// Tests
TEST_CASE("Unit_NoGpuTst_hipGetDeviceCount") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipGetDeviceCount));
}

TEST_CASE("Unit_NoGpuTst_hipSetDevice") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipSetDevice));
}

TEST_CASE("Unit_NoGpuTst_hipDeviceGetAttribute") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipDeviceGetAttribute));
}

TEST_CASE("Unit_NoGpuTst_hipDeviceGetP2PAttribute") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipDeviceGetP2PAttribute));
}

TEST_CASE("Unit_NoGpuTst_hipDeviceGetPCIBusId") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipDeviceGetPCIBusId));
}

TEST_CASE("Unit_NoGpuTst_hipDeviceGetByPCIBusId") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipDeviceGetByPCIBusId));
}

TEST_CASE("Unit_NoGpuTst_hipDeviceTotalMem") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipDeviceTotalMem));
}

TEST_CASE("Unit_NoGpuTst_hipFuncSetSharedMemConfig") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipFuncSetSharedMemConfig));
}

TEST_CASE("Unit_NoGpuTst_hipStreamCreate") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipStreamCreate));
}

TEST_CASE("Unit_NoGpuTst_hipStreamCreateWithPriority") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipStreamCreateWithPriority));
}

TEST_CASE("Unit_NoGpuTst_hipStreamSynchronize") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipStreamSynchronize));
}

TEST_CASE("Unit_NoGpuTst_hipStreamGetFlags") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipStreamGetFlags));
}
#if HT_AMD
TEST_CASE("Unit_NoGpuTst_hipExtStreamCreateWithCUMask") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipExtStreamCreateWithCUMask));
}
#endif
TEST_CASE("Unit_NoGpuTst_hipStreamAddCallback") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipStreamAddCallback));
}

TEST_CASE("Unit_NoGpuTst_hipEventCreateWithFlags") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipEventCreateWithFlags));
}

TEST_CASE("Unit_NoGpuTst_hipDeviceSynchronize") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipDeviceSynchronize));
}

TEST_CASE("Unit_NoGpuTst_hipGetDevice") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipGetDevice));
}

TEST_CASE("Unit_NoGpuTst_hipDeviceGetCacheConfig") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipDeviceGetCacheConfig));
}

TEST_CASE("Unit_NoGpuTst_hipDeviceGetSharedMemConfig") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipDeviceGetSharedMemConfig));
}

TEST_CASE("Unit_NoGpuTst_hipDeviceSetSharedMemConfig") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipDeviceSetSharedMemConfig));
}

TEST_CASE("Unit_NoGpuTst_hipPointerGetAttributes") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipPointerGetAttributes));
}
#if HT_AMD
TEST_CASE("Unit_NoGpuTst_hipExtMallocWithFlags") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipExtMallocWithFlags));
}
#endif
TEST_CASE("Unit_NoGpuTst_hipMallocManaged") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipMallocManaged));
}

TEST_CASE("Unit_NoGpuTst_hipHostFree") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipHostFree));
}

TEST_CASE("Unit_NoGpuTst_hipMemcpyWithStream") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipMemcpyWithStream));
}

TEST_CASE("Unit_NoGpuTst_hipMallocArray") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipMallocArray));
}
#if HT_AMD
TEST_CASE("Unit_NoGpuTst_hipMallocMipmappedArray") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipMallocMipmappedArray));
}
#endif
TEST_CASE("Unit_NoGpuTst_hipDeviceEnablePeerAccess") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipDeviceEnablePeerAccess));
}

TEST_CASE("Unit_NoGpuTst_hipHostMalloc") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipHostMalloc));
}

TEST_CASE("Unit_NoGpuTst_hipMalloc") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipMalloc));
}

TEST_CASE("Unit_NoGpuTst_hipHostRegister") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipHostRegister));
}

TEST_CASE("Unit_NoGpuTst_hipMemcpy") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipMemcpy));
}

TEST_CASE("Unit_NoGpuTst_hipMemAllocPitch") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipMemAllocPitch));
}

TEST_CASE("Unit_NoGpuTst_hipMemGetInfo") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipMemGetInfo));
}

TEST_CASE("Unit_NoGpuTst_hipMalloc3DArray") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipMalloc3DArray));
}

TEST_CASE("Unit_NoGpuTst_hipDeviceCanAccessPeer") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipDeviceCanAccessPeer));
}

TEST_CASE("Unit_NoGpuTst_hipDeviceDisablePeerAccess") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipDeviceDisablePeerAccess));
}

TEST_CASE("Unit_NoGpuTst_hipDeviceGet") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipDeviceGet));
}

TEST_CASE("Unit_NoGpuTst_hipDeviceComputeCapability") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipDeviceComputeCapability));
}

TEST_CASE("Unit_NoGpuTst_hipDeviceGetName") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipDeviceGetName));
}

TEST_CASE("Unit_NoGpuTst_hipGetDeviceProperties") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipGetDeviceProperties));
}

TEST_CASE("Unit_NoGpuTst_hipChooseDevice") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipChooseDevice));
}

#if HT_AMD
TEST_CASE("Unit_NoGpuTst_hipExtGetLinkTypeAndHopCount") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipExtGetLinkTypeAndHopCount));
}

TEST_CASE("Unit_NoGpuTst_hipExtStreamGetCUMask") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipExtStreamGetCUMask));
}
#endif

TEST_CASE("Unit_NoGpuTst_hipFuncSetAttribute") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipFuncSetAttribute));
}

TEST_CASE("Unit_NoGpuTst_hipFuncSetCacheConfig") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipFuncSetCacheConfig));
}

TEST_CASE("Unit_NoGpuTst_hipStreamCreateWithFlags") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipStreamCreateWithFlags));
}

TEST_CASE("Unit_NoGpuTst_hipDeviceGetStreamPriorityRange") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipDeviceGetStreamPriorityRange));
}

TEST_CASE("Unit_NoGpuTst_hipEventCreate") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipEventCreate));
}

TEST_CASE("Unit_NoGpuTst_hipStreamGetPriority") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipStreamGetPriority));
}

TEST_CASE("Unit_NoGpuTst_hipDeviceReset") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipDeviceReset));
}

TEST_CASE("Unit_NoGpuTst_hipDeviceSetCacheConfig") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipDeviceSetCacheConfig));
}

TEST_CASE("Unit_NoGpuTst_hipDeviceGetLimit") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipDeviceGetLimit));
}

TEST_CASE("Unit_NoGpuTst_hipGetDeviceFlags") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipGetDeviceFlags));
}

TEST_CASE("Unit_NoGpuTst_hipSetDeviceFlags") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipSetDeviceFlags));
}

TEST_CASE("Unit_NoGpuTst_hipModuleLoad") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipModuleLoad));
}

TEST_CASE("Unit_NoGpuTst_hipFuncGetAttributes") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipFuncGetAttributes));
}

TEST_CASE("Unit_NoGpuTst_hipModuleLoadData") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipModuleLoadData));
}

TEST_CASE("Unit_NoGpuTst_hipModuleLoadDataEx") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipModuleLoadDataEx));
}

TEST_CASE("Unit_NoGpuTst_hipLaunchCooperativeKernel") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipLaunchCooperativeKernel));
}

TEST_CASE("Unit_NoGpuTst_hipLaunchCooperativeKernelMultiDevice") {
  REQUIRE(NoGpuTst_Common(
          NoGpuTst_hipLaunchCooperativeKernelMultiDevice));
}
#if HT_AMD
TEST_CASE("Unit_NoGpuTst_hipExtLaunchMultiKernelMultiDevice") {
  REQUIRE(NoGpuTst_Common(
          NoGpuTst_hipExtLaunchMultiKernelMultiDevice));
}
#endif
TEST_CASE("Unit_NoGpuTst_hipOccupancyMaxActiveBlocksPerMultiprocessor") {
  REQUIRE(NoGpuTst_Common(
  NoGpuTst_hipOccupancyMaxActiveBlocksPerMultiprocessor));
}

TEST_CASE("Unit_NoGpuTst_hipOccupancyMaxActiveBlocksPerMultiprocessorFlags") {
  REQUIRE(NoGpuTst_Common(
          NoGpuTst_hipOccupancyMaxActiveBlocksPerMultiprocessorFlags));
}

TEST_CASE("Unit_NoGpuTst_hipOccupancyMaxPotentialBlockSize") {
  REQUIRE(NoGpuTst_Common(
          NoGpuTst_hipOccupancyMaxPotentialBlockSize));
}

TEST_CASE("Unit_NoGpuTst_hiprtcVersion") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hiprtcVersion));
}

TEST_CASE("Unit_NoGpuTst_hiprtcCreateProgram_DestroyProg") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hiprtcCreateProgram_DestroyProg));
}

TEST_CASE("Unit_NoGpuTst_hiprtcAddNameExpression") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hiprtcAddNameExpression));
}

TEST_CASE("Unit_NoGpuTst_hipMallocPitch") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipMallocPitch));
}

#if HT_AMD
TEST_CASE("Unit_NoGpuTst_hipMipmappedArrayCreate") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipMipmappedArrayCreate));
}
#endif
TEST_CASE("Unit_NoGpuTst_hipMalloc3D") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipMalloc3D));
}

TEST_CASE("Unit_NoGpuTst_hipGraphCreate") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipGraphCreate));
}

TEST_CASE("Unit_NoGpuTst_hipStreamBeginCapture") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipStreamBeginCapture));
}

TEST_CASE("Unit_NoGpuTst_hipStreamIsCapturing") {
  REQUIRE(NoGpuTst_Common(NoGpuTst_hipStreamIsCapturing));
}
#endif  // #ifdef __linux__

redpajama_set_name: RedPajamaGithub


"Yer Ing-Glish Sux!!!" Archives | GiveMeSomeEnglish!!!
The biggest and most common mistakes made – not by English learners – but by Native Speakers, English Teachers, Text-Books, and even Dictionaries.
The Pseudo-Word "Diarize" – Its Meaning, Its Usage, And where it (probably) came from… And, finally… Why it completely Sux!!!!


text:
Q: in a nextjs-firebase app, google login works locally but not when deployed to Heroku login modal pops up for a split second and disappears... help anyone?
tried deploying my nextjs-firebase app to Heroku, expected auth to work as it does in dev on localhost

A: This can be because of your firebase Auth setup, check if you're not referencing some speicific origin URLs that the Oauth works on. Maybe you're mentioning only the localhost origin, but not the domain of the deployed project.


text:
Pokettomonsuta! Japanese Pokémon trailer released today
Weird Japanese pocket monsters never looked so good!
by Jenifyr Kaiser
Konichiwa Pokémon fans! In anticipation of their 2 upcoming games Pokémon Sun and Pokémon Moon, the Pokémon Company released a new trailer on YouTube. The trailer is entirely in Japanese, but fear not dear readers -- even if you don't speak Japanese, it's easy to see how the game will look and the plethora of new Pokémon heading our way.
There's no way of knowing what the names of all these critters will be, but we do know one of them. Zygarde, from the previous games Pokémon X and Y, makes an appearance in the trailer. In the video it appears to be changing from its 50% form into its complete form. It then proceeds to decimate the opposing Pokémon.
It looks like Pokémon Sun and Pokémon Moon will release for Nintendo 3DS this November in Japan. There's no word yet regarding release dates for the rest of the world. Check out the official website for more details and get ready for battle, or as they say in Japan -- tatakai!
Jenifyr Kaiser
I am an author and freelance writer living in the beautiful State of Colorado. I am currently writing for Gameskinny, but I also have other projects in the works. I have nearly 20 years of experience in the technology and gaming industry. I also have over 5 years of experience as a technical writer and process development specialist. In addition to my technical experience, I am also a licensed Skin Care Professional and Makeup artist. My love of skin care and makeup allows me to provide expert advice for health and beauty magazines. I enjoy writing on a number of other subjects including history, current events, culture, art, and literature, but my primary passion is technology and the gaming industry, especially how these things change and affect our...more »
Web Twitter Facebook
Games Pokemon Sun and MoonPokémon X and YPokémon Genres ActionAdventureFamilyFightingKidsRPGSimulation	Platforms 3DS	Tags new pokemontrailerzygarde
Source youtu.be
Published Jun. 30th 2016
Pokemon Mystery Dungeon: Rescue Team DX Impressions: A Mystery Indeed
First Pokemon Direct of 2020 Announced
How to Catch Ditto in Pokemon GO


If you need professional equipment and supplies to refurbish your vehicle, come to Mohawk Auto Parts in Muleshoe and speak to our auto part experts. We will help you find the items you need - we offer quality parts at fair prices.
The headlights and tail lights on your car help increase your visibility. Mohawk Auto Parts offers products for all domestic and import vehicles. Contact us at 806-272-4675 or visit Mohawk Auto Parts today for all your headlight and tail light assembly needs.
The mirrors on your vehicle help you see the vehicles approaching from behind. Mohawk Auto Parts offers products for all domestic and import vehicles. Contact us at 806-272-4675 or visit Mohawk Auto Parts today if you need a replacement mirror.
Sanders are tools used to smooth surfaces (in preparation for painting work). The sanders, which are usually powered electrically or by compressed air, smooth surfaces by abrasion. To prepare a surface for painting you need to sand (smooth) it. At Mohawk Auto Parts in Muleshoe, TX 79347 we offer the best sanders in the industry. Call or visit our auto shop, for quality sanders.
Welding is the fabrication and sculptural process that joins metal parts together. Welding is an integral part of most motor vehicle repair and refurbishing services. To get the right welding supplies and welding equipment, you need Mohawk Auto Parts. We offer high quality welders and welding supplies that promote efficiency and safety.